第一:
function change(){
document.getElementById("clr").style.backgroundColor="red";
document.getElementById("test1").innerHTML="hwllo world";
}
第二个:
document.getElementById("test1").innerHTML="hwllo world";
第一个工作正常。但是第二个在加载文件时不起作用。
第一:
function change(){
document.getElementById("clr").style.backgroundColor="red";
document.getElementById("test1").innerHTML="hwllo world";
}
第二个:
document.getElementById("test1").innerHTML="hwllo world";
第一个工作正常。但是第二个在加载文件时不起作用。
Javascript 和 HTML 渲染按照它们在文件中的顺序执行。因此,如果您在呈现 HTML 元素之前执行一段 JS,那么 JS 代码将无法工作。
这将失败:
<script>
document.getElementById("test1").innerHTML="hwllo world";
</script>
<div id="test1"></div>
这将按预期工作:
<div id="test1"></div>
<script>
document.getElementById("test1").innerHTML="hwllo world";
</script>
或者,您可以使用各种 onload 和 dom 就绪事件来确保您的脚本在所有 HTML 被渲染后执行:
<script>
window.onload = function(){
document.getElementById("test1").innerHTML="hwllo world";
}
</script>
<div id="test1"></div>
控制台中有什么错误?可能是您正在尝试设置不存在节点的 innerHTML 吗?如果要使用 div 进行操作,则必须在页面加载后进行,因此通常将其称为 body 事件 onLoad:
<script>
function init() {
document.getElementById("test1").innerHTML="hello world";
}
</script>
<body onload="init();">
<div id="test1"></div>
...
正如 James Allardice 在他的评论中所说,代码可能在 DOM 准备好之前执行。您的代码可能会失败,因为该元素可能不存在。这是一个已知的问题,但也有一个已知的解决方案。最常用的解决方案可能是使用jQuery,它有一种简单的方法可以让函数仅在文档准备好后才执行。要使用此方法,首先您需要包含 jQuery 作为脚本引用,然后修改您的代码如下:
$(document).ready(function() {
document.getElementById("clr").style.backgroundColor="red";
document.getElementById("test1").innerHTML="hwllo world";
});
现在,如果您仍然使用 jQuery,您还可以重写代码以使用 jQuery 选择器并使其更紧凑:
$(document).ready(function() {
$("#clr").css("backgroundColor", "red");
$("#test1").html("hwllo world");
});
两段代码在功能上是等效的。