innerHTML在for循环里“只执行一次”的问题(本人小白一枚)

版权声明:若要转载:请附上原文链接;作者:CSDNyzk。 https://blog.csdn.net/CSDNyzk/article/details/83212800

今天在w3school里系统学习JS的知识时,看到一个TIY,原本代码如下: 

<!DOCTYPE html>
<html>
<body>

<p>点击下面的按钮,将代码块循环五次:</p>
<button onclick="myFunction()">点击这里</button>
<p id="demo"></p>

<script>
function myFunction()
{
var x="";
for (var i=0;i<5;i++)
  {
  x=x + "The number is " + i + "<br>";
  }
document.getElementById("demo").innerHTML=x;
}
</script>

</body>
</html>

运行结果很明显:

The number is 0
The number is 1
The number is 2
The number is 3
The number is 4 

 我发现问什么要把innerHTML放在for循环外面呢?放在里面不是还能直接将x=x + "The number is " + i + "<br>";换为x="The number is " + i + "<br>";吗?

于是我将document.getElementById("demo").innerHTML=x;放在了for循环里面,但运行结果变成了:

 The number is 4 

有点懵逼,之后搜了下,发现要把document.getElementById("demo").innerHTML=x;换成

document.getElementById("demo").innerHTML+=x;

 就行了。

后来找了找innerHTML的意思是“内部的HTML”,然后恍然大悟,也就是说document.getElementById("demo").innerHTML指的是id为demo的元素的整体内容,所以如果直接用“=”,相当于将原来的内容覆盖(/取代?)了,所以需要变为“+=”。

(注:题目“只执行一次”加了引号)

猜你喜欢

转载自blog.csdn.net/CSDNyzk/article/details/83212800