Javascript JS在数组中循环以更改段落的innerHTML

Javascript JS在数组中循环以更改段落的innerHTML,javascript,html,paragraph,Javascript,Html,Paragraph,我还在学习js的基础知识。在这个问题上,我的预期结果是得到a,b,c,d,但它给出了a,b,c,c。有人能解释一下吗?当我放入x[3]时,它会打印出a,b,c,d <p>a</p> <p>b</p> <p>c</p> <p id="demo">d</p> <script> var x = document.getElementsByTagName("

我还在学习js的基础知识。在这个问题上,我的预期结果是得到a,b,c,d,但它给出了a,b,c,c。有人能解释一下吗?当我放入x[3]时,它会打印出a,b,c,d

<p>a</p>
<p>b</p>
<p>c</p>
<p id="demo">d</p>

<script>
    var x = document.getElementsByTagName("p");
    var i;
    for (i = 0; i < x.length; i++) {
        document.getElementById("demo").innerHTML = x[i].innerHTML;
    }
</script>
a

b

c

d

var x=document.getElementsByTagName(“p”); var i; 对于(i=0;i
这里的问题是,当代码循环到带有“demo”ID的p标记时,它将自己的值读取为“c”,因为这是您在上一次迭代中分配给它的值

使

d

成为

a表示i=0

b表示i=1

c表示i=2


当它到达i=3时,它读取自身的值,即“c”,因此它将自身重新分配为“c”。
\demo
自身是
document.getElementsByTagName
找到的最后一个元素。它的
innerHTML
首先通过循环设置为第一个
元素的innerHTML,然后设置第二个,然后设置第三个。在上一次迭代开始时,由于第三个段落元素,它的innerHTML是“c”。然后,它将其innerHTML设置为自己的innerHTML,因此它最终保持为“c”。

我也在想同样的事情,但是由于x在循环之前声明,它不应该工作吗?非常感谢。非常感谢