В нем говорится, что 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 или помещенном до любой из элементов вы хотите "получить".

не имеет значения, импортируете ли вы скрипт или он встроен, главное-это размещение. Вам также не нужно помещать команду внутри функции; хотя это хорошая практика, вы можете просто вызвать ее напрямую, она работает просто отлично.


Это означает, что элемент id перешло к getElementById() не существует.


можно использовать в 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, так как браузер не может найти, где находится элемент, которым вы хотите управлять.