为什么这个Javascript代码在IE7-8中失败?

时间:2011-09-11 02:10:34

标签: javascript internet-explorer

我有这段代码:

window.addEvent('domready', function() {

  var li_list = document.getElementById("topmenu").getElementsByTagName("li");

  for (var i=0; i<li_list.length; i++) {

      li_list[i].onmouseover=function() {
          this.className+=" hover";
      }

      li_list[i].onmouseout=function() {
          this.className=this.className.replace(new RegExp(" hover\\b"), "");
      }
  }
})

在IE7-8中失败:document.getElementById(...)为null或不是对象。

在Firefox中运行良好。

这会影响网站的主菜单功能:http://paraguasparados.com

感谢。

3 个答案:

答案 0 :(得分:4)

在IE上,domready可以在dom准备好之前启动。 Post.

因此,当您的代码执行时,document对象尚不可用。 (因此IE错误消息“document.getElementById(...)为null或不是对象。”)

解决方案:使用工具包(jQuery,yui等)提供与IE和其他浏览器相同的domready。

答案 1 :(得分:3)

试试这个。这应该仅适用于IE浏览器。

document.attachEvent( "onreadystatechange", function() {
    if ( document.readyState === "complete" ) {
        // dom ready
    }
});

答案 2 :(得分:1)

使用jquery,他们已经完成了跨浏览器工作的腿部工作。

$(document).ready(function() {
// do some stuff here
});