Подтвердить что ты не робот

GetElementById возвращает null?

document.getElementById('id of div that definately exists') возвращает значение null.

Я изначально загрузил последний javascript, чтобы убедиться, что мне не нужно беспокоиться о событии onload. Я также попытался использовать событие onload. Это очень жуткий. Любые идеи или помощь будут высоко оценены.

4b9b3361

Ответ 1

Это может быть вызвано:

  • Неверный синтаксис HTML (некоторый тег не закрыт или подобная ошибка)
  • Дублирующие идентификаторы - есть два элемента HTML DOM с одинаковым идентификатором
  • Может быть, элемент, который вы пытаетесь получить по ID, создается динамически (загружается ajax или создается script)?

Пожалуйста, разместите свой код.

Ответ 2

Также будьте осторожны, как вы выполняете js на странице. Например, если вы делаете что-то вроде этого:

(function(window, document, undefined){

  var foo = document.getElementById("foo");

  console.log(foo);

})(window, document, undefined); 

Это вернет null, потому что вы будете вызывать документ до его загрузки.

Лучший вариант.

(function(window, document, undefined){

// code that should be taken care of right away

window.onload = init;

  function init(){
    // the code to be called when the dom has loaded
    // #document has its nodes
  }

})(window, document, undefined);

Ответ 3

Может быть много причин, почему document.getElementById не работает

  • У вас есть недопустимый идентификатор

    Идентификаторы ID и NAME должны начинаться с буквы ([A-Za-z]), за которой может следовать любое количество букв, цифр ([0-9]), дефис ( "-" ), подчеркивание ( "_" ), двоеточие ( ":" ) и периоды ( "." ). (ресурс: Каковы допустимые значения для атрибута id в HTML?)

  • вы использовали какой-то идентификатор, который вы уже использовали в качестве <meta> имени в своем заголовке (например, авторское право, автор...), это выглядит странно, но со мной произошло: если вы используете IE, взгляните на (ресурс: http://www.phpied.com/getelementbyid-description-in-ie/)

  • вы нацеливаете элемент внутри фрейма или iframe. В этом случае, если iframe загружает страницу в пределах одного домена родителя, вы должны нацеливать contentdocument перед поиском элемента (ресурс: Вызов определенного идентификатора внутри фрейма)

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

Я сомневаюсь, что вы использовали тот же ID два или более: в этом случае document.getElementById должен вернуть хотя бы первый элемент