GetElementById возвращает null?
document.getElementById('id of div that definately exists')
возвращает значение null.
Я изначально загрузил последний javascript, чтобы убедиться, что мне не нужно беспокоиться о событии onload. Я также попытался использовать событие onload. Это очень жуткий. Любые идеи или помощь будут высоко оценены.
Ответы
Ответ 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
должен вернуть хотя бы первый элемент