2013-08-22 90 views
0

我遇到了这个代码的问题,它在所有浏览器上工作,除IE外。Javascript函数返回undefined在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> 

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 

有什么事情成为问题M&

+1

对于该行它返回的错误? – tobspr

+1

什么版本的IE? – Spudley

+0

可能重复的[我们有getElementsByClassName在JavaScript?](http://stackoverflow.com/questions/1818865/do-we-have-getelementsbyclassname-in-javascript) –

回答

6

.getElementsByClassName在IE8或更早版本中不受支持。

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

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

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

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

希望有所帮助。

+2

如果你想支持IE7,他们必须自己实现'getElementsByClassName'。 –

+0

哇,我不知道..谢谢它的工作:) –

+0

@felix ...或使用jQuery :-) –