document.getElementById в IE - PullRequest
       2

document.getElementById в IE

0 голосов
/ 06 апреля 2011

Когда я использую document.getElementById в Internet Explorer, я получаю эту ошибку:

Mensaje: El objeto no acepta esta propiedad o método

Перевод:

Object does not support this property or method

и выполнение останавливается

Html:

  <div id="contenedor">
  ...
  </div>

JavaScript:

  contenedor = document.getElementById("contenedor");

Это нормально работает в Firefox и Chrome.

Ответы [ 3 ]

3 голосов
/ 07 апреля 2011

Существует ошибка в некоторых (?) Версиях IE, где он определяет глобальные константы для каждого значения id в документе. Поэтому, когда вы пишете contenedor = document.getElementById("contenedor") - обратите внимание, что он использует имя div для переменной - он видит, что вы пытаетесь установить эту глобальную переменную, и жалуется, что не можете. Что вы должны сделать, это объявить новую переменную вместо установки глобальной: var contenedor = document.getElementById("contenedor")

0 голосов
/ 07 апреля 2011

Похоже, ваш javascript выполняется до того, как DOM будет готов.Многие библиотеки javascript включают механизм добавления события, когда DOM готов, в противном случае можно использовать событие body onload.

Вы можете попробовать поместить свой javascript внизу документа, но этонет никакой гарантии, что код не будет выполнен до того, как страница загрузится достаточно для того, чтобы браузер смог построить дерево DOM.Вам гораздо лучше использовать фреймворк с событием ready или domready (например, mootools или jquery), ИЛИ использовать событие body onload, как упомянуто.

Пример:

<html>
<head>
<script type="text/javascript">
  var initPage = function() {
    // do stuff
  }
</script>
</head>
<body onload="initPage();">
 <!-- page content -->
</body>
</html>
0 голосов
/ 07 апреля 2011

Если это просто document.getElementById('someid'), которое дает вам это сообщение, возможно, размещение вашего скрипта в нижней части HMTL (прямо перед закрывающим тегом ) поможет.

, если вы хотите бытьчтобы элемент был загружен до того, как вы присвоите его переменной, используйте

window.onload = function(){
 contenedor = document.getElementById("contenedor");
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...