В нем говорится, что TypeError: документ.getElementById (...) имеет значение null
хотя я нажал параметр getElementById, мне интересно, откуда берется эта ошибка "is null"?
TypeError: document.getElementById(...) is null
[Break On This Error]
document.getElementById(elmId).innerHTML = value;
Line 75
в дополнение к этому я задаюсь вопросом, почему название и время не отображаются, если я не нажму одну из этих фотографий плейлиста?
7 ответов
все эти результаты в 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;
}
}
убедитесь, что скрипт помещен в нижняя часть элемента тела документа, которым вы пытаетесь манипулировать, а не в элементе HEAD или помещенном до любой из элементов вы хотите "получить".
не имеет значения, импортируете ли вы скрипт или он встроен, главное-это размещение. Вам также не нужно помещать команду внутри функции; хотя это хорошая практика, вы можете просто вызвать ее напрямую, она работает просто отлично.
можно использовать в jQuery чтобы убедиться, что все элементы документов готовы, прежде чем он запускает клиентские скрипты
$(document).ready(
function()
{
document.getElementById(elmId).innerHTML = value;
}
);
в вашем коде вы можете найти эту функцию:
// 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.
Я получил ту же ошибку. В моем случае у меня было несколько div с тем же идентификатором на странице. Я переименовал другой идентификатор используемого div и исправил проблему.
Так подтвердите ли элемент:
- существует с id
- не имеет дубликата с id
- подтвердите, называется ли скрипт
У меня такая же проблема. Это просто скрипт javascript загружается слишком быстро-до загрузки элемента HTML. Таким образом, браузер возвращает null, так как браузер не может найти, где находится элемент, которым вы хотите управлять.