2013-11-01 2 views
0

Этот код не работает с IE, но он работает на chrome и firefox.SCRIPT5007: Невозможно установить значение свойства 'href': объект имеет значение null или undefined

Я получаю сообщения об ошибке IE консоли: SCRIPT5007: Невозможно установить значение «HREF» объекта: объект является нулевым или не определено

<script> 
$(document).on("ready", alternar_banner); 

array_imagen = new Array(2); 
array_imagen[0] = new Image(108,225); 
array_imagen[0].src = "banner1.gif"; 
array_imagen[1] = new Image(108,225); 
array_imagen[1].src = "banner2.gif"; 

array_url = new Array(2); 
array_url[0] = 'http://www.google.com'; 
array_url[1] = 'https://www.yahoo.com'; 

contador = 0; 

function alternar_banner(){ 
    window.document["banner"].src = array_imagen[contador].src; 
window.document.links["bannerref"].href = array_url[contador]; 
contador ++; 
contador = contador % array_imagen.length; 
setTimeout("alternar_banner()",6000); 
} 

</script> 

<a name="bannerref" href="#"><img src="#" name="banner" width=108 height=225 border=0></a> 
+1

Соответствующий HTML код отсутствует. –

+0

есть ли ссылка с id 'bannerref' в вашем DOM и если есть, есть ли там href-тег? – Krishna

ответ

2

document.links возвращает коллекцию якорей с HREF атрибута, если вы не имеют атрибутов href, связанных с якорем, они не возвратят его как часть коллекции.

Свойство ссылок возвращает коллекцию всех элементов AREA и элементов привязки в документе со значением для атрибута href.

Так что может быть несколько вещей:

  • Идентификатор/название элемента, который вы ищете не bannerref.
  • Не имеет атрибута href.

Update после обновления вопроса разметки

Похоже document.links в IE должен быть передан с использованием индекса, т.е. например: window.document.links[0].href, но вы не можете полагаться на это, так как там culd еще много якорей появляются раньше , Вместо этого попробуйте использовать ниже, если это единственный экземпляр якоря с именем:

document.getElementsByName("bannerref")[0].href = array_url[contador]; 

или дать идентификатор для этого якоря, как bannerref:

document.getElementById("bannerref").href = array_url[contador]; 

или вы также можете использовать JQuery для извлечения и установите для него атрибут.

и лучше использовать практику предоставления опорной функции для setTimeout

т.е.

setTimeout(alternar_banner,6000); 
+0

OP явно использует jQuery, почему бы не использовать его для этого тоже? – Teemu

+0

Спасибо всем. PSL, я сделал то, что вы предлагаете, и теперь он работает. Как вы сказали, я даю и удостоверяюсь и использую getElementById, большое спасибо за совет. – user2946332

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

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