在编写js的时候,习惯性的将script放在head中,就经常导致出现使用body中的id报错(xxx is not defined),后来发现window.onload可以解决这个问题。
这里是编写随机十六进制的颜色为例子。
<script>
var color = '0123456789abcdef'
var Sj = ''
function co() {
for (i = 0; i < 6; i++) {
var j = parseInt(Math.random() * 17 - 1);
Sj = Sj + color[j];
}
}
co();
a1.style.background = '#' + Sj;
</script>
因为a1是div在body中的id名字,此script在head中,就导致了最后一行代码a1.style.background = '#' + Sj;无法正常运行,会报错a1 is not defined。
尝试修改为以下代码即可正常使用。
window.onload = function () {
a1.style.background = '#' + Sj;
}
查阅资料发现,此问题是页面按照顺序加载,先加载了script,然后再加载了带有id的标签,导致了script无法找到正确的id。window.onload可以让页面加载完毕后再执行里面的代码块。