我收到此错误:"Uncaught TypeError: Cannot set property 'innerHTML' of 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);
}
}
;
*/
};
答案 0 :(得分:3)
如果您在初始解析页面后使用document.write
(或document.writeln
)(您执行此操作,因为您在计时器中使用它),则会隐式执行{{1} },它完全消除了现有的页面(并用你写的内容替换它)。因此,当您尝试查找它们时,您的元素将不再存在。
我不清楚你的document.open
是做什么的,但是如果你删除它,你就会停止消灭你的元素,而document.writeln(p)
应该能够找到它。
如果您的目标是将document.getElementById
中的图片标记写入p
元素,那么:
ban
...并删除document.getElementById("bad").innerHTML = p;
即可。
旁注:document.writeln
行可以只是:setInterval
函数是第一类对象。
旁注2:你似乎在var myTimery = setInterval(myTimer, 1000);
0,1,2之间循环,然后又回到0.你有一些复杂的逻辑。仅供参考,使用您可以使用的imgn
运算符有一个方便的技巧:
%
假设你从0开始,接下来将是1,然后是2,然后是0,然后是1 ......