• js浏览器操作DOM之删除DOM


    删除一个DOM节点就比插入要容易得多。

    要删除一个节点,首先要获得该节点本身以及它的父节点,然后调用父节点的removechild把自己删掉即可:

    <!Doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>JavaScript</title>
    </head>
    <body>
    <div id="list">
        <p id="java">Java</p>
        <p id="python">Python</p>
        <p id="scheme">Scheme</p>
    </div>
    <script>
    'use strict';
    //获取需要删除的节点
    var self = document.getElementById('java');
    //获取需要删除节点的父节点
    var parent = self.parentElement;
    //进行删除操作
    //var removed = parent.removeChild(self);
    parent.removeChild(self);
    </script>
    </body>
    </html>

    结果:

    删除的节点虽然不在文档树中了,但其实它还是在内存中保留的,可以随时再次被添加到别的位置

    !Doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>JavaScript</title>
    </head>
    <body>
    <div id="list">
        <p id="java">Java</p>
        <p id="python">Python</p>
        <p id="scheme">Scheme</p>
    </div>
    <script>
    'use strict';
    //获取需要删除的节点
    var self = document.getElementById('java');
    //获取需要删除节点的父节点
    var parent = self.parentElement;
    //进行删除操作
    //var removed = parent.removeChild(self);
    var removed = parent.removeChild(self);
    console.log(removed === self);
    </script>
    </body>
    </html>

    结果:

    当我们遍历一个父节点的子节点并进行删除操作时,要注意,children属性是一个只读属性,并且在子节点变化时会实时更新。

    如下面的例子:

    <div id="parent">
        <p>First</p>
        <p>Second</p>
    </div>

    当我们用如下代码删除子节点时:

    var parent = document.getElementById('parent');
    parent.removeChild(parent.children[0]);
    parent.removeChild(parent.children[1]); // <-- 浏览器报错

    浏览器报错:parent.children[1]不是一个有效的节点。原因就在于,当<p>First</p>节点被删除后,parent.children的节点数量已经从2变为了1,索引[1]已经不存在了。

    因此,删除多个节点时,要注意children属性时刻都在变化。

  • 相关阅读:
    OpenStack 数据库操作 demo
    python 实现获取电脑IP、主机名、Mac地址
    openvswitch BFD 简介
    Python 获取主机名
    OpenvSwitch完全使用手册
    ovs datapath笔记
    openstack 实用命令
    表示数值的字符串 牛客网 剑指Offer
    反转单词顺序列 牛客网 剑指Offer
    第一个只出现一次字符的位置 牛客网 剑指Offer
  • 原文地址:https://www.cnblogs.com/ocean-boy/p/7382543.html
Copyright © 2020-2023  润新知