JS遍历数组以更改段落的innerHTML

时间:2020-08-09 22:17:54

标签: 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("p");
    var i;
    for (i = 0; i < x.length; i++) {
        document.getElementById("demo").innerHTML = x[i].innerHTML;
    }
</script>

2 个答案:

答案 0 :(得分:1)

这里的问题是,当您的代码循环到带有“ demo” ID的p标签时,它会读取自己的值“ c”,因为这是您在上一次迭代中为其分配的。

使<p id="demo">d</p>成为

a for i = 0

b for i = 1

c for i = 2

当i = 3时,它将读取自身的值“ c”,因此将其自身重新分配为“ c”。

答案 1 :(得分:1)

#demo本身是document.getElementsByTagName发现的最后一个元素。首先将其innerHTML设置为第一个<p>元素的innerHTML,然后将其设置为第二个,然后设置为第三个。在最后一次迭代的开始,由于第三段元素,其innerHTML为“ c”。然后将其innerHTML设置为其自己的innerHTML,因此最终保持为“ c”。