itlife365.com_begin
Uncaught TypeError: Cannot set properties of null (setting 'innerHTML')的原因和处理
Cannot-set-properties-of-null-innerHTML
再使用self.setInterval写js代码的时候都遇到过这样的问题,网上百度了一下。
Cannot set properties of null (setting 'innerHTML'),这个报错的意思是无法读取null的属性“innerHTML”,即表示找不到你想要将所写的HTML代码插入的地方。
原因:浏览器加载HTML文档时,会将HTML文档解析为一个树形结构,称为DOM树,代码的执行顺序是自上而下依次执行,当执行到innerHTML这一行代码时,他并没有加载到下面的DOM结构,就会报错无法读取HTML。
观察了一下代码确实这样
解决办法:将DOM的读取部分的script放在body后面。或者在script标签中添加window.onload,等页面加载结束后再执行这一部分代码。
解决:将 self.setInterval(showTime, 1000);这一行代码放到body之后:
<body>
<div id="time"> </div>
</body>
<script>
setInterval(showTime, 1000);
</script>
</html>
或在原本的script标签中添加window.onload
<script>
window.onload = function () {
setInterval(showTime, 1000);
}
</script>
Cannot-set-properties-of-null-innerHTML
itlife365.com_end