<!DOCTYPE html>
<html>
<head>
<script>
document.getElementById("passage").innerHTML = "Paragraph changed!";
</script>
</head>
<body>
<div id="passage">hello</div>
<div id="question"></div>
<div id="answers"></div>
</body>
</html>
为什么document.getElementById("passage").innerHTML = "Paragraph changed!"
不适合我?我最后得到一个空白的屏幕,甚至不是原来的“你好”。
答案 0 :(得分:6)
在加载元素之前调用脚本,尝试在加载元素
之后调用脚本<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="passage">hello</div>
<div id="question"></div>
<div id="answers"></div>
<script>
document.getElementById("passage").innerHTML = "Paragraph changed!";
</script>
</body>
</html>
答案 1 :(得分:3)
如果您检查控制台,则可以看到错误
未捕获的TypeError:无法设置属性&#39; innerHTML&#39;为null
这就是自上而下解析和执行HTML页面。
因此,它无法确定您提到的元素是什么。
因此,您应该使用EventListener或将脚本放在body标记
结尾之前
<!DOCTYPE html>
<html>
<head>
</head>
<script>
window.onload=function(){
document.getElementById("passage").innerHTML = "Paragraph changed!";
};
</script>
<body>
<div id = "passage">hello</div>
<div id = "question"></div>
<div id = "answers"></div>
</body>
</html>
&#13;
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id = "passage">hello</div>
<div id = "question"></div>
<div id = "answers"></div>
<script>
document.getElementById("passage").innerHTML = "Paragraph changed!";
</script>
</body>
</html>
&#13;
答案 2 :(得分:1)
加载页面后,您应该执行脚本
否则,当您引用它们时,页面的所有元素可能仍未附加到dom。
而不是在可能容易出错的元素声明之后移动脚本(您应该始终了解脚本的顺序),您可以使用
设计在dom完全装满后执行的事件
例如onload
的{{1}}属性:
body
答案 3 :(得分:-1)
您的脚本在加载元素之前调用。
尝试
$(document).ready(function()
{
document.getElementById("passage").innerHTML = "Paragraph changed!";
});
JS:
(function(){
document.getElementById("passage").innerHTML = "Paragraph changed!";
})