JAVAScript基础学习--dom节点操作

本文详细讲解了DOM操作中的关键概念,包括`childNodes`、`firstChild`、`lastChild`、`ownerDocument`、`parentNode`和`siblings`的用法,以及购物车数量加减示例,并涵盖了元素节点创建、添加、替换、删除和克隆等实战技巧。
摘要由CSDN通过智能技术生成

节点属性

 

1.childNodes  返回包含被选节点的子节点的 NodeList

 

​ 如果选定的节点没有子节点,则该属性返回不包含节点的 NodeList。

 

​ 如需循环子节点列表,使用 nextSibling 属性,要比使用父对象的 childNodes 列表效率更高。

 

2.firstChild 返回被选节点的第一个子节点,如果选定的节点没有子节点,则该属性返回 NULL。

 

​ 获取指定元素的第一个子节点,可以是元素节点,也可以是文本节点。

 

3.lastChild 可返回文档的最后一个子节点。

 

4.ownerDocument 可返回某元素的根元素。

 

5.parentNode 可返回某节点的父节点。如果指定的节点没有父节点则返回 null。

 

6.previousSibling 可返回某节点之前紧跟的节点(处于同一树层级)

 

​ 返回节点以节点对象返回。注意:如果没有此节点,那么该属性返回 null。

 

7.nextSibling  可返回某个元素之后紧跟的节点(处于同一树层级中)。

 

​ 返回节点以节点对象返回。注意: 如果元素紧跟后面没有节点则返回 null.

<ul id="ul">

        <li>11</li>

        <li>22</li>

        <li id="a">33</li>

        <li>44</li>

    </ul>

    <script >

       var ulDom=document.getElementById("ul");

           console.log("ul的所有子节点-元素+文本",ulDom.childNodes);

           console.log("ul的所有子元素节点", ulDom.children);

 

           console.log("ul下第一个子节点",ulDom.firstChild);

           console.log("ul下第一个子元素节点",ulDom.firstElementChild);

           console.log("ul下最后一个子节点",ulDom.lastChild);

           console.log("ul下最后一个子元素节点",ulDom.lastElementChild);

           console.log("-----------------------");

           var aLiDom= document.getElementById("a");

           console.log("上一个兄弟节点",aLiDom.previousSibling);

           console.log("上一个兄弟元素 节点",aLiDom.previousElementSibling);

           console.log("下一个兄弟节点",aLiDom.nextSibling);

           console.log("下一个兄弟元素 节点",aLiDom.nextElementSibling);

           console.log("父节点",aLiDom.parentNode );

           console.log("父节点",aLiDom.parentElement );

 

案例:网站购物车数量加减数量的实现,如下图:

 

代码如下:

<button id="jian">-</button>1<button id="jia">+</button>

    <script>

      var i=1;

      //获取加好按钮

      var jiadom=document.getElementById("jia");

      //获取减号按钮

      var jiandom=document.getElementById("jian");

      //绑定点击事件

      jiadom.onclick=function(){

        //获取加号的前节点  

        var textnodes=jiadom.previousSibling;

        //点一下事件,加1

          i++;

          textnodes.nodeValue=i;

      }

      jiandom.onclick=function(){

          var textnodess=jiandom.nextSibling;

          if(i>0){

            i--;

          textnodess.nodeValue=i;

          }

        

      }

创建元素节点

代码如下:

<div></div>

 

    <script>

        var h1Dom= document.createElement("h1");

                console.log("创建元素节点",h1Dom);

 

        var textDom=document.createTextNode("h1");

                console.log("创建文本节点",textDom);

    </script>

添加

 

​ 父节点.appendChild() 节点的子节点列表的末尾添加新的子节点。

 

   父节点.append() 可以传入多个

 

​ 父节点.insertBefore(插入的新节点,原节点)   在已有的子节点前插入一个新的子节点

<div id="box">

        <h1>123</h1>

    </div>

    <script>

        //创建h2元素标签对象

        var h2dom=document.createElement("h2");

        h2dom.innerText=456;

        //创建h3元素标签对象

        var h3dom=document.createElement("h3");

        h3dom.innerText=786;

        //获取div

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

        //父元素.appendchild(子元素),在父元素内部  末尾追加一个元素节点

        

        boxdom.appendChild(h2dom);

        boxdom.appendChild(h3dom);

 

        //追加两个??多个?

        //append可在父元素内部  末尾添加多个节点

        //boxdom.append(h2dom,h3com);

         //---------------

         //在父元素  内部  某个元素  之前添加

        //boxdom.insertBefore(新元素,目标元素)

        //在div内部h1之前添加p标签,内容为哈哈哈

        //1/创建p

        var  pdom=document.createElement("p");

        //2/赋值p的内容

        pdom.innerText="哈哈";

        pdom.style.color="red";

        //3获取div

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

        //4获取h1

        var h1dom=divdom.firstElementChild;

        //5将p添加到div内,h1之前

          divdom.insertBefore(pdom,h1dom);

          //思考,如果没有h1呢?如何找到文本节点

    </script>

替换

 

​ 父节点.replaceChild(新节点,老节点)

    <div id="box">

        <h1 id="h1">123</h1>

    </div>

    <script>

// 将 h1 标签 替换为 p 标签

 

        //1、 创建p标签

        var pdom=document.createElement("p");

        //2、 p标签内容 == h1 内容

        //2-1、获取 h1 标签

       var  h1dom=document.getElementById("h1");

        //2-2、获取 h1 的内容

       var h1Text=h1dom.innerText;

        //2-3、p标签内容 = h1 内容

        pdom.innerText=h1dom.innerText;

        //3、替换 父元素.replaceChild(新节点,老节点)    

        //3-1、获取 父元素 div

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

        divdom.replaceChild(pdom,h1dom);

    </script>

删除

 

​ 父节点.removeChild(要删除的元素)  方法可从父节点下的子节点列表中删除某个节点

 

​ 自身节点.remove() 将本身移除掉

    <div>

        <h1 id="h1">123</h1>

        <h2 id="h2">456</h2>

    </div>

    <script>

        //父节点.removechild (要删除的元素)

        //1获取父节点div

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

        //获取要删除的元素

        var h1dom=document.getElementById("h1");

        //删除//

        divdom.removeChild(h1dom);

    </script>

    <script>

            //父节点.removechild (要删除的元素)

        //1获取父节点div

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

        //获取要删除的元素

        var h2dom=document.getElementById("h2");

        //删除//

        h2dom.remove(); 

    </script>

克隆

 

DOM1.cloneNode(boolean) : 复制一个节点

true:深复制,复制节点及其整个子节点树

false : 浅复制,只复制节点本身。默认是false

    <div id="box">

        <h1 id="h1">123</h1>

    </div>

    <script>

        //克隆h1--添加带box内部末尾

        //1,获取h1 

        var h1dom=document.getElementById("h1");

        //2克隆,dom1.cloneNode(boolean)

        //true:深复制,复制节点及其子节点

        //flase:钱复制,支付至节点本身,默认为false;

        var ch1dom=h1dom.cloneNode(true);

        //将克隆得到的元素放入box的内部末尾

        //先获取box

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

        //父节点.appendChild(克隆得到的元素)

        divdom.appendChild(ch1dom);

    </script>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

公诚士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值