Javascript函数在IE中返回undefined

时间:2013-08-22 10:35:01

标签: javascript internet-explorer

我遇到了这段代码的问题,它在IE以外的所有浏览器上工作。

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>

THE JAVASCRIPT

<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

可能是什么问题?

2 个答案:

答案 0 :(得分:6)

IE8或更早版本不支持

.getElementsByClassName

您可以使用.querySelector()代替IE8和所有其他现代浏览器。

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

请注意querySelector()返回单个元素(因此上面的代码中没有[0]。您只需要给定示例中的一个元素,但如果您需要多个元素,与.getElementsByClassName()相同,则可以使用.querySelectorAll()

另请注意,以上所有内容仅适用于IE8及更高版本。如果您需要支持IE7,那么您将不得不寻找另一种解决方案。可能你最好的选择是jQuery,因为IE7没有内置的本机解决方案。

希望有所帮助。

答案 1 :(得分:2)

如果你使用的是IE8,那么不支持getElementsByClassName

请参阅http://caniuse.com/getelementsbyclassname