我正在调用一个打印到 div 的函数,然后返回一个也打印到 div 的字符串。以下只会打印“二”,但我希望它先打印“一”,然后打印“二”:
<body>
<div id="view"></div>
</body>
<script>
global_cdiv = "view"
function test1(){
document.getElementById(global_cdiv).innerHTML += "one" + "<br>";
return "two";
}
document.getElementById(global_cdiv).innerHTML += test1();
</script>
调试中没有出现任何错误或任何内容。 为什么Javascript会忽略函数内的innerHTML? (解决方法是将 test1() 中的值存储到变量中然后打印它,但为什么不能直接使用 test1 ?)
最佳答案
document.getElementById(global_cdiv).innerHTML += test1();
是
的缩写形式document.getElementById(global_cdiv).innerHTML = document.getElementById(global_cdiv).innerHTML + test1();
评估之前test1()
innerHTML
值被评估为空并且与 test1()
的结果连接起来这是 two
。所以,实际的表达就变成了这样
document.getElementById(global_cdiv).innerHTML = "" + "two";
这会覆盖 test1()
中设置的任何内容。这就是为什么你只看到 two
.
要了解它确实会覆盖它,请更改您的 test1()
像这样
function test1(){
document.getElementById(global_cdiv).innerHTML += "one" + "<br>";
console.log(document.getElementById(global_cdiv).innerHTML);
return "two";
}
它将打印 one<br>
关于javascript - 为什么将值返回到innerHTML 时,函数内部的innerHTML 会被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19604888/