老师我使用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回答

好帮手慕夭夭

2020-11-08

同学你好,问题解答如下:

1.老师这边测试代码,发现控制台报错,如下按F12查看:

http://img.mukewang.com/climg/5fa7589409ef7a9208040117.jpg

报错大概意思是有无效的语法,点击后面的文件名就会跳转到错误代码,如下:

http://img.mukewang.com/climg/5fa758c709d1aaa606910178.jpg

这里不知道是上传代码的问题,还是同学自己用中文输入法导致的无效的空格。如果同学那边测试有报错,把这些空格或者换行都删掉就没有报错了。如下:

http://img.mukewang.com/climg/5fa75918094f461f06210213.jpg

想要设置空格或者换行,把输入法切换成英文状态。如果没有这个报错,则忽略上面的问题。

2.不能删除第二个p是因为:第一次循环,i=0,删掉第一个p。此时第二个p就变成了第一个p,第三个p就是第二个p了。第二次循环,i=1,删掉的第二个p就是原来的第三个p(除非i的值又变成0,才能把原来的第二个p删掉)。以此类推,第四个p也没有被删掉。效果如下:

http://img.mukewang.com/climg/5fa75a7409ac8bd002810098.jpg

如果想要删掉所有的p,可以在循环最后,把索引i的值减去1。如下:


http://img.mukewang.com/climg/5fa75aa6098ad84b05140137.jpg

祝学习愉快!

1
higorous阿炎
h 老师很细心,谢谢回答!
h020-11-08
共1条回复

0 学习 · 15276 问题

查看课程