老师我使用for循环想删掉p标签,结果发现就第二项p标签删不掉?
来源:3-20 节点的创建、移除和克隆
Vigorous阿炎
2020-11-07 20:33:01
<div id="B">
<p>我是box2的原有p标签1</p>
<p>我是box2的原有p标签2</p>
<p>我是box2的原有p标签3</p>
<p>我是box2的原有p标签4</p>
</div>
<script>
var oBox=document.getElementById('B');
var oBox1=oBox.getElementsByTagName('p');
for(var i=0;i<oBox1.length;i++){
oBox.removeChild(oBox1[i]);
}
</script>
在这里输入代码,可通过选择【代码语言】突出显示
1回答
同学你好,问题解答如下:
1.老师这边测试代码,发现控制台报错,如下按F12查看:
报错大概意思是有无效的语法,点击后面的文件名就会跳转到错误代码,如下:
这里不知道是上传代码的问题,还是同学自己用中文输入法导致的无效的空格。如果同学那边测试有报错,把这些空格或者换行都删掉就没有报错了。如下:
想要设置空格或者换行,把输入法切换成英文状态。如果没有这个报错,则忽略上面的问题。
2.不能删除第二个p是因为:第一次循环,i=0,删掉第一个p。此时第二个p就变成了第一个p,第三个p就是第二个p了。第二次循环,i=1,删掉的第二个p就是原来的第三个p(除非i的值又变成0,才能把原来的第二个p删掉)。以此类推,第四个p也没有被删掉。效果如下:
如果想要删掉所有的p,可以在循环最后,把索引i的值减去1。如下:
祝学习愉快!
相似问题