2013-08-22 81 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 :-) –