我有以下html代码:
<!DOCTYPE html>
<html>
<head>
<script>
var array = ["one", "two", "three", "four"];
for(i = 0; i<array.length; i++){
alert(array[i]);
var tmp = document.getElementById(array[i]);
alert(tmp.id);
alert(tmp.innerHTML);
var to_append = tmp.innerHTML;
array_inc.push(to_append);
alert(array_inc);
console.log(array_inc);
}
</script>
</head>
<body>
<div id = "one">1</div>
<div id = "two">2</div>
<div id = "three">3</div>
<div id = "four">4</div>
</body>
</html>然而,在控制台中,当它到达第9行时,我收到了一个错误,它显示"type of null as not exist",但很明显,div的id必须存在,因为我在主体中将其声明为id。这怎麽可能?
发布于 2015-08-02 08:01:43
您的html元素不会在脚本加载时加载,因此在执行javascript时不存在。更改代码的顺序可以解决这个问题:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id = "one">1</div>
<div id = "two">2</div>
<div id = "three">3</div>
<div id = "four">4</div>
<script>
var array = ["one", "two", "three", "four"];
for(i = 0; i<array.length; i++){
alert(array[i]);
var tmp = document.getElementById(array[i]);
alert(tmp.id);
alert(tmp.innerHTML);
var to_append = tmp.innerHTML;
array_inc.push(to_append);
alert(array_inc);
console.log(array_inc);
}
</script>
</body>
</html>发布于 2015-08-02 08:03:15
在HTML完全呈现之前,您的JS代码可能正在运行。为了避免这种情况,在'DOMContentLoaded‘事件触发之前不要运行你的代码。
<script>
document.addEventListener("DOMContentLoaded", function(event) {
// your code here
});
</script>发布于 2017-07-18 19:41:05
请在整个html正文不会出现任何错误后加载javascript
https://stackoverflow.com/questions/31767354
复制相似问题