Почему этот код Javascript не работает в IE7-8? - PullRequest
0 голосов
/ 11 сентября 2011

У меня есть этот код:

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 ]

4 голосов
/ 11 сентября 2011

В IE domready может сработать до того, как dom будет фактически готов. Post.

Итак, объект document еще не доступен, когда ваш код выполняется. (Следовательно, сообщение об ошибке IE «document.getElementById (...) является нулевым или не является объектом.»)

Решение: используйте инструментарий (jQuery, yui и т. Д.), Чтобы предоставить эквивалент domready, который работает в IE и других браузерах.

3 голосов
/ 11 сентября 2011

Попробуйте вместо этого. Это должно работать только в IE.

document.attachEvent( "onreadystatechange", function() {
    if ( document.readyState === "complete" ) {
        // dom ready
    }
});
1 голос
/ 11 сентября 2011

Используйте jquery, они проделали большую работу, чтобы заставить его работать через браузер.

$(document).ready(function() {
// do some stuff here
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...