2013-11-01 50 views
0

此代码不适用于IE,但它在Chrome和Firefox上执行。SCRIPT5007:无法设置属性'href'的值:对象为空或未定义

我收到此错误信息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

在DOM中是否存在与“bannerref”标识的链接?如果存在,是否存在href标记? – Krishna

回答

2

document.links返回锚的集合与href属性,如果你没有与锚点关联的href属性,它不会将其作为集合的一部分返回。

links属性返回文档中具有href属性值的所有AREA元素和锚点元素的集合。

所以它可能是两件事情:

  • 你正在寻找的元素的ID /名称不bannerref
  • 它没有href属性。

更新标记的问题,更新后

好像需要用指数即前被称为document.links在IE:window.document.links[0].href但你不能靠,既然有culd是之前出现更多的锚。相反,尝试使用下面如果是锚的名称的唯一实例:

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

或给该主播bannerref一个id:

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

,或者您也可以使用jQuery来获取元素并为其设置属性。

,并更好地利用给函数引用的做法setTimeout

setTimeout(alternar_banner,6000); 
+0

OP显然使用jQuery,为什么不使用它呢? – Teemu

+0

感谢所有。 PSL,我做了你的建议,现在它的工作。 就像你说的,我给和ID并使用getElementById,非常感谢你的提示。 – user2946332

相关问题