我仍在学习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>
答案 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”。