我收到此错误:“未捕获类型错误:无法将属性“innerHTML”设置为 null”
。我在我的代码中找不到错误。我现在不使用 CSS,也不使用 jQuery。
这是我的 HTML 代码:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--<script src="js/banner_test_script.js" language="javascript" type="text/javascript"></script>-->
</head>
<body>
<div id="ban"></div>
<script src="js/banner_test_script.js"></script>
</body>
</html>
这是我的 JavaScript 代码:
window.onload = function what()
{
var myTimery = setInterval(function() {
myTimer();
}, 1000);
var imgn = 0;
function myTimer()
{
if (imgn === 0)
{
var d = "../../download.jpg";
imgn++;
}
else if (imgn === 1)
{
var d = "../../images.jpg";
imgn++;
}
else if (imgn === 2)
{
var d = "../../images1.jpg";
resetImgn();
}
var p = '<img src="' + d + '"></img>';
document.getElementById("ban").innerHTML = "lol";
document.writeln(p);
console.log(document.getElementById('ban') + "1");
console.log(document.getElementById("ban") + "2");
}
;
function resetImgn()
{
imgn = 0;
}
;
/*
function myTimer()
{
for (i = 0; i < 200; i++)
{
document.writeln(i);
}
}
;
*/
};
最佳答案
如果您在页面初始解析后使用 document.write
(或 document.writeln
)(您这样做是因为您在计时器中使用它) ),这会隐式执行一个 document.open
操作,它会完全清除现有页面(并用您编写的内容替换它)。因此,当您尝试查找元素时,它们不再存在。
我不清楚您的 document.writeln(p)
的用途,但如果删除它,您将停止删除您的元素,并且 document.getElementById
应该能够找到它。
如果您的目标是将 p
中的图像标记写入 ban
元素,则:
document.getElementById("bad").innerHTML = p;
...删除 document.writeln
就可以了。
旁注:setInterval
行可以是: var myTimery = setInterval(myTimer, 1000);
函数是一流的对象。
旁注 2:您似乎在 imgn
0、1、2 之间循环,然后又回到 0。执行此操作的逻辑有些复杂。仅供引用,有一个使用 %
运算符的便捷技巧,您可以使用:
imgn = (imgn + 1) % 3;
假设从 0 开始,接下来是 1,然后是 2,然后是 0,然后是 1...
关于javascript - 未捕获的类型错误 : Cannot set property 'innerHTML' of null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23783471/