虽然我向getElementById传递了一个参数,但我想知道这个“为null”的错误是从哪里来的?
TypeError: document.getElementById(...) is null
[Break On This Error]
document.getElementById(elmId).innerHTML = value;
Line 75
此外,我想知道为什么除非我点击其中一个播放列表图片,否则标题和时间不会显示?虽然我向getElementById传递了一个参数,但我想知道这个“为null”的错误是从哪里来的?
TypeError: document.getElementById(...) is null
[Break On This Error]
document.getElementById(elmId).innerHTML = value;
Line 75
此外,我想知道为什么除非我点击其中一个播放列表图片,否则标题和时间不会显示?确保将脚本放置在要操作的文档的BODY元素底部,不要放在HEAD元素中或放在您想要"获取"的任何元素之前。
无论是导入脚本还是内联脚本,重要的是它的位置。您也不必将命令放在函数内部; 虽然这是一个好习惯,但您可以直接调用它,这也可以正常工作。
所有这些结果都为 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) {
elem.innerHTML = value;
}
}
getElementById()
的id
元素不存在。在客户端脚本开始之前,您可以使用 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());
</body>
之后应该会触发纠错,使其在 </body>
之前插入到 DOM 中。无论如何,它仍应在文档中的所有其他内容之后,并且能够找到文档中的任何元素。 - Quentin