如何既能创建新节点,又可以删除已创建的节点呢?以下代码该如何补充,老师给个完整的思路,谢谢!

如何既能创建新节点,又可以删除已创建的节点呢?以下代码该如何补充,老师给个完整的思路,谢谢!

<button id="create">创建</button>

  <button id="remove">删除</button>

  <ul id="box"></ul>

  <script>

    var create = document.getElementById("create");

    var remove = document.getElementById("remove");

    var box = document.getElementById("box");



    create.onclick = function () {

      var newli = document.createElement("li");

      newli.innerText = "我是新创建的";

      box.appendChild(newli);

    }

</script>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕慕子 2021-10-06 14:29:53

同学你好,如果是点击删除按钮时,将之前已创建的节点全部删除,那么可以参考如下思路:

先定义一个空数组,在点击创建按钮时,将创建的节点添加到数组中;删除按钮的点击事件中,遍历数组并移除已创建的节点,循环结束后,将数组重新赋值为空数组即可,如下:

https://img1.sycdn.imooc.com//climg/615d41e8096d541b12120818.jpg

如果是只需要上一个新创建的节点删除,那么只需要定义一个全局变量保存新创建的节点,然后在删除按钮的点击事件中移出这个节点就可以了。示例:

https://img1.sycdn.imooc.com//climg/615d425e095e71b710800662.jpg

祝学习愉快~

  • 提问者 怒焰狂暴 #1

    老师,我写的代码如下,我点删除了,是可以删除一个,但是删除第二个的时候就出错了。代码如下:

    <body>

      <button id="create">创建</button>

      <button id="remove">删除</button>

      <ul id="list"></ul>



      <script>

        var create = document.getElementById("create");

        var remove = document.getElementById("remove");

        var list = document.getElementById("list");

        var newli;

        create.onclick = function () {

          newli = document.createElement("li");

          newli.innerText = "我是新来的";

          list.appendChild(newli);

        }


        list.onclick = function(e){

          e.target.style.color = "red";

        }


        remove.onclick = function(){

          list.removeChild(newli);

        }

      </script>

    </body>


    2021-10-06 15:55:55
  • 好帮手慕慕子 回复 提问者 怒焰狂暴 #2

    同学你好,如果需要点击一次删除按钮就删除一个元素,那么可以通过lastChildElement属性获取到最后一个子元素,然后添加判断,如果存在的话,就删除该元素即可。示例:

    https://img1.sycdn.imooc.com//climg/615d5ab809b3c6b310540340.jpg

    祝学习愉快~

    2021-10-06 16:13:52
  • 提问者 怒焰狂暴 #3

     remove.onclick = function () {

          for (var i = 0; i < li.length; i++) {

            list.removeChild(li[i]);

          }

          li = [];  

        }


    li=[]这里表示的是什么意思呢,没弄明白,它主要的作用是啥,如果我不添加,第一次点击是可以删除,但是第二次点击就出错了。主要的原理是啥


    2021-10-07 00:12:11
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师