2013-08-22 4 views
0

IE를 제외한 모든 브라우저에서 작동하는이 코드에 문제가 있습니다.IE에서 javavript 함수가 undefined를 반환합니다.

html로

<div class="separator"> 
<a href="http://www.domain.com/images/s1920/original.jpg"> 
<img height="250" src="http://www.domain.com/images/s400/photo.jpg" /> 
</a> 
</div> 

자바 스크립트를

<script type='text/javascript'> 
var ImageSource = document.getElementsByClassName('separator')[0].getElementsByTagName('a')[0].href; 
ImageSource = ImageSource.replace(/0\//, '0-d/'); 
</script> 
예상대로 작동

하지만 난 IE에서 테스트 할 때이 오류를 반환

Message: Object doesn't support this property or method 

무엇을 할 수 쓸모가있다 엠?

+1

이있는 줄은 오류를 반환하지 참조

지원되지 않습니다 있도록 IE8을 사용하는 경우에 잘 – tobspr

+1

IE의 버전은 무엇입니까? – Spudley

+0

가능한 복제본 [자바 스크립트에 getElementsByClassName이 있습니까?] (http://stackoverflow.com/questions/1818865/do-we-have-getelementsbyclassname-in-javascript) –

답변

6

.getElementsByClassName은 IE8 이하에서는 지원되지 않습니다.

대신 IE8에서 작동하는 .querySelector() 및 기타 모든 최신 브라우저를 사용할 수 있습니다. querySelector()은 (따라서 위의 코드에서 후 [0]가없는) 하나의 요소를 돌려

var ImageSource = document.querySelector('.separator').getElementsByTagName('a')[0].href; 

참고. 주어진 예제에서는 하나의 요소 만 필요하지만 복수 요소를 원할 경우 .getElementsByClassName()과 같으므로 .querySelectorAll()을 사용할 수 있습니다.

위의 모든 내용은 IE8 이상에만 적용됩니다. IE7을 지원해야하는 경우 다른 솔루션을 찾아야합니다. 아마 IE7에 네이티브 솔루션이 내장되어 있지 않기 때문에 가장 좋은 옵션은 jQuery 일 것입니다.

희망이 있습니다. getElementsByClassName가 http://caniuse.com/getelementsbyclassname

+2

그리고 IE7을 지원하기 원한다면, 그것들은 스스로 getElementsByClassName을 구현해야한다. –

+0

와우, 그걸 알았어 .. 고마워. :) –

+0

@felix ... 또는 jQuery :-) 사용 –

관련 문제