Он говорит, что TypeError: document.getElementById(...) является нулевым
У меня есть демонстрационная страница . Хотя я нажал параметр getElementById, мне интересно, откуда это ошибка "null" ? Firebug дает эту ошибку, когда один щелчок на изображениях плейлистов у игрока. Также ошибка произошла не один раз, но она повторялась тысячи и тысячи раз, когда я оставил страницу открытой.
TypeError: document.getElementById(...) is null
[Break On This Error]
document.getElementById(elmId).innerHTML = value;
Line 75
В дополнение к этому мне интересно, почему заголовок и время не показывались, если я не щелкнул одну из этих фотографий плейлиста?
Ответы
Ответ 1
Все эти результаты отображаются в null
:
document.getElementById('volume');
document.getElementById('bytesLoaded');
document.getElementById('startBytes');
document.getElementById('bytesTotal');
Вам нужно выполнить нулевую проверку в updateHTML следующим образом:
function updateHTML(elmId, value) {
var elem = document.getElementById(elmId);
if(typeof elem !== 'undefined' && elem !== null) {
document.getElementById(elmId).innerHTML = value;
}
}
Ответ 2
Убедитесь, что script помещен в нижнюю часть элемента BODY документа, который вы пытаетесь манипулировать, а не в элементе HEAD или помещен перед любым элементом, который вы хотите "получить".
Не важно, импортируете ли вы script или если он встроен, важно разместить. Вам также не нужно вводить команду внутри функции; в то время как это хорошая практика, вы можете просто называть ее напрямую, она работает нормально.
Ответ 3
Это означает, что элемент с id
, переданный в getElementById()
, не существует.
Ответ 4
Вы можете использовать JQuery, чтобы убедиться, что все элементы документов готовы, прежде чем запускать скрипты на стороне клиента.
$(document).ready(
function()
{
document.getElementById(elmId).innerHTML = value;
}
);
Ответ 5
В коде вы можете найти эту функцию:
// Update a particular HTML element with a new value
function updateHTML(elmId, value) {
document.getElementById(elmId).innerHTML = value;
}
Позже вы вызываете эту функцию с несколькими параметрами:
updateHTML("videoCurrentTime", secondsToHms(ytplayer.getCurrentTime())+' /');
updateHTML("videoDuration", secondsToHms(ytplayer.getDuration()));
updateHTML("bytesTotal", ytplayer.getVideoBytesTotal());
updateHTML("startBytes", ytplayer.getVideoStartBytes());
updateHTML("bytesLoaded", ytplayer.getVideoBytesLoaded());
updateHTML("volume", ytplayer.getVolume());
Первый параметр используется для "getElementById", но элементов с идентификаторами "bytesTotal", "startBytes", "bytesLoaded" и "volume" не существует. Вам нужно будет создать их, так как они вернут null.
Ответ 6
У меня такая же проблема. Это просто javascript script загружается слишком быстро - перед загрузкой HTML-элемента. Таким образом, браузер возвращает null, так как браузер не может найти, где находится элемент, которым вы хотите манипулировать.
Ответ 7
Я получил ту же ошибку. В моем случае у меня было несколько div с одинаковым идентификатором на странице. Я переименовал другой идентификатор используемого div и исправил проблему.
Итак, убедитесь, что элемент:
- существует с id
- не имеет дубликата с id
- подтвердите, называется ли script