2013-08-22 4 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> 

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 

Что может быть пробой м?

+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

WOW, я не знал, что .. спасибо, он сработал :) –

+0

@felix ... Или использовать jQuery :-) –

Смежные вопросы