gpt4 book ai didi

javascript - 为什么在将值返回给 innerHTML 时,函数内部的 innerHTML 会被忽略?

转载 作者:太空宇宙 更新时间:2023-11-04 15:10:58 33 4
gpt4 key购买 nike

我正在调用一个打印到 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com