JavaScript---DOM模型之DOM树节点的增、删、改、查(二)

本文详细介绍了DOM操作中的增、删、改方法,包括如何添加文本节点和元素节点,使用removeNode和removeChild进行删除操作,以及如何实现节点的替换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇主要学习了DOM树节点的查,这一篇就要来学习,增,删,改。

DOM树节点的增

第一种情况:增加一个文本节点
三个步骤:

  1. 创建一个文本节点:document.createTextNode(“文本内容”)
var oTextNode = document.createTextNode("湖南城院");
  1. 找到要加在的位置(找到父节点):主要是前面查的方法
var oDivNode = document.getElementById("div1")
  1. .父节点把文本节点加进去:appendChild方法
oDiv.appendChild(oTextNode);

代码演示

 <body>
        <div id="div1">div区域</div>
        <hr/>
        <input type="button" value="间接查询childNodes" onclick="demo1()">
        <input type="button" value="间接查询children" onclick="demo2()">
      <script type="text/javascript">
            function demo1(){
                // 创建一个文本节点     createTextNode
                var oTextNode = document.createTextNode(",增加的文本节点");
                // 找到要添加的位子(父节点)
                var oDivNode = document.getElementById("div1");
                // 把文本节点添加进去
                oDivNode.appendChild(oTextNode);
            }
      </script>

  </body>

添加前
这里写图片描述
添加后
这里写图片描述

第二种情况:增加一个普通元素节点
三个步骤(与前面类似)

  1. 创建一个普通元素 createElement(元素名)
var oNode = document.createElement("input");
  1. 找到要加在的位置(找到父节点):主要是前面查的方法
var oDivNode = document.getElementById("div1")
  1. .父节点把文本节点加进去:appendChild方法
oDiv.appendChild(oNode);

添加前
这里写图片描述
添加后
这里写图片描述

第二种添加元素节点方法: innerHTML 方法 和 innerText方法

第一步找到添加位置(父节点)

var oDiv = document.getElementById("div1");

第二步直接调用方法添加

oDiv.innerText = "abc123"
oDiv.innerHTML = '<input type="button" value="一个新按钮" onclick="add2()">';

演示
这里写图片描述

整片学习代码

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>DOM模型演示---增删改查中的增</title>
    </head>

    <body>
       <div id="div1">   </div>

       <hr/>
       <input type="button" value="添加1" onclick="add1()"><br/>
       <input type="button" value="添加2" onclick="add2()"><br/>
       <input type="button" value="添加3" onclick="add3()"><br/>

        <script type="text/javascript">
            //1添加一个文本节点
            function add1(){
                //1创建一个文件节点
                var oTextNode = document.createTextNode("湖南城院");
                //2获取div节点
                var oDiv = document.getElementById("div1");
                //3把文本节点加成div节点的孩子
                oDiv.appendChild(oTextNode);
            }

            //2添加一个按钮节点
            function add2(){
                //1创建一个文件节点
                var oInputNode = document.createElement("input");
                oInputNode.type="button";
                oInputNode.value="一个新按钮";

                //2获取div节点
                var oDiv = document.getElementById("div1");
                //3把文本节点加成div节点的孩子
                oDiv.appendChild(oInputNode);
            }

            //3通过每个标签的innerHTML属性也可以添加节点
            function add3(){
                //1获取div节点
                var oDiv = document.getElementById("div1");
                //2设置div节点的innerHTML属性 (innerText属性也可以,但只是文本内容)
                //oDiv.innerText="abc132";
                //oDiv.innerText=oDiv.innerText+"abc132";
                oDiv.innerHTML='<input type="button" value="一个新按钮" onclick="add2()">';
            }
        </script>


    </body>
</html>

接下来就是删除节点

删除节点方法两种:
第一种: 自己调用removeNode(true/false) true,false是否删除子节点 返回值为被删除的节点(不知道为什么敲代码这个浏览器没用,360也不行,换了老的IE)

var oDivNode = document.getElementById("div2");

//true 表示删除子节点  false 表示不删除子节点

var boo= oDivNode.removeNode(false);

删除节前
这里写图片描述
删除节点后(不删除子节点 这里写图片描述
删除子节点这里写图片描述

还有一种删除的方式,通过父节点来删除自己。与上一种类似,仅仅是调用了.parentNode.removeChild(oldNode)方法

function delNode(){
    var oDivNode = document.getElementById("div2");
    //true 表示删除子节点  false 表示不删除子节点
    var boo= oDivNode.removeNode(true);
    通过父节点来删除自己 removeChild()会整个子树一起删除
    oDivNode.parentNode.removeChild(oDivNode);
}

接下来就是—改(替换)

替换有两种情况,移动替换(交换)和克隆替换

移动替换如下
这里写图片描述

克隆替换如下
这里写图片描述

两者代码演示

<body>
       <div id="div1"> 第一个div  </div>
       <div id="div2">
                        第二个div 
           <a href="#a">aaaa</a>
           <span>eeee</span>
       </div>
       <div id="div3"> 第三个div  </div>
       <hr/>
        <input type="button" value="移动替换" onclick="updateNode1()">
        <input type="button" value="克隆替换" onclick="updateNode2()">
      <script type="text/javascript">
            function updateNode1(){
                //先拿到两个要移动替换的节点 oDiv1 oDiv3
                var oDiv1 = document.getElementById("div1");
                var oDiv3 = document.getElementById("div3");
                // 利用父节点调用 replaceChild (oDiv1,oDiv3)
                oDiv1.parentNode.replaceChild(oDiv1, oDiv3);
            }
            function updateNode2(){
                //先拿到两个要移动替换的节点 oDiv1 oDiv3
                var oDiv1 = document.getElementById("div1");
                var oDiv3 = document.getElementById("div3");
                // 克隆衣服oDiv3.cloneNode(true/false) 是否克隆子节点 默认false;
                var  copyoDiv3 = oDiv3.cloneNode();
                oDiv3.parentNode.replaceChild(copyoDiv3, oDiv1)
            }

      </script>

  </body>

替换前
这里写图片描述
移动替换
这里写图片描述
克隆替换(不带子树)
这里写图片描述
克隆替换带子树
这里写图片描述

上课时学习代码

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>DOM模型演示---增删改查中的删</title>
        <style type="text/css">
            div{
                border: #00ff00 solid 1px;
                width: 200px;
                height:50px;
                margin:10px;
            }
            #div1{
                background-color: #770077
            }
            #div2{
                background-color: #00DD00
            }
            #div3{
                background-color: #FFFF00
            }
        </style>
    </head>

    <body>
       <div id="div1"> 第一个div  </div>
       <div id="div2">
                        第二个div 
           <a href="#a">aaaa</a>
           <span>eeee</span>
       </div>
       <div id="div3"> 第三个div  </div>

       <hr/>
       <input type="button" value="删除" onclick="delNode()"><br/>
        <script type="text/javascript">
            function delNode(){
                var oDivNode = document.getElementById("div2");

                //var boo = oDivNode.removeNode(false); //删除后,所有子节点上升一层
                //var boo = oDivNode.removeNode(true); //连子节点一起删除
                alert(boo);


                //建议比较干净删除方式,让父节点删除子节点
            //  oDivNode.parentNode.removeChild(oDivNode); //removeChild()会整个子树一起删除

            }

        </script>

        <br/>
        <input type="button" value="移动替换" onclick="updateNode()"><br/>
        <input type="button" value="克隆替换" onclick="updateNode2()"><br/>
        <script type="text/javascript">
            //用div3 替换 div1
            //1移动替换
            function updateNode(){
                var oDivNode1 = document.getElementById("div1");
                var oDivNode3 = document.getElementById("div3");
                //oDivNode1.replaceNode(oDivNode3);
                oDivNode1.parentNode.replaceChild(oDivNode3,oDivNode1);
            }

            //2克隆替换
            function updateNode2(){
                var oDivNode1 = document.getElementById("div1");
                var oDivNode3 = document.getElementById("div3");
                var oCopyDiv3 = oDivNode3.cloneNode(true);//空参默认为cloneNode(false),代表子树不克隆。相反,cloneNode(true)会连子树一起克隆
                oDivNode1.parentNode.replaceChild(oCopyDiv3,oDivNode1);
            }
        </script>   
    </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值