DOM节点--类型、使用方式

目录

常用节点类型

元素节点

属性节点

文本节点

注释节点

文档节点

获取节点方式

节点层级

获取父节点

获取子节点

获取兄弟节点

创建节点方式

添加节点方式

删除节点方式

克隆节点方式


        在前面我们讲述DOM概念的时候,有提到,网页中所有的内容都是节点,节点是DOM树中非常重要的概念,故对节点单独做一个总结:

常用节点类型

元素节点

        元素节点即所有元素标签

        1.节点类型nodetype:1

        2.节点名字nodeName:大写标签名

        3.节点文本内容nodeValue:null

属性节点

        属性节点即所有属性

        1.节点类型nodetype:2

        2.节点名字nodeName:属性名

        3.节点文本内容nodeValue:属性值

文本节点

        文本节点包括所有文字、标签之间的空格和换行

        1.节点类型nodetype:3

        2.节点名字nodeName:#text

        3.节点文本内容nodeValue:文本内容

注释节点

        注释节点即注释内容

        1.节点类型nodetype:8

        2.节点名字nodeName:#comment

        3.节点文本内容nodeValue:注释内容

文档节点

        文档节点即文档document

        1.节点类型nodetype:9

        2.节点名字nodeName:#document

        3.节点文本内容nodeValue:null

获取节点方式

节点层级

        节点可分为四种:

        1.根节点:即<html>,有且仅有一个

        2.父节点:某节点的上级节点

        3.子节点:某节点的下级节点

        4.兄弟节点:具有相同父节点的节点

获取父节点

语法:element.parentNode

    <div>
        <h5>content0</h5>
        <p>content1</p>
        <span>content2</span>
    </div>
    <script>
        //获取标签<h5>
        var h5 = document.querySelector('h5');
        //获取其父节点
        console.log("标签<h5>父节点是:",h5.parentNode);
    </script>

        上例中节点<h5>的父节点是<div>,所以输出应该是<div>, console接口中可以查看输出,并且<div>可以展开看见其内部子元素

获取子节点

1.获取所有子节点(节点集合)

语法:element.childNodes

2.获取第一个子节点

语法:element.firstChild

3.获取最后一个子节点

语法:element.lastChild

4.获取元素子节点(元素集合)

语法:element.children

5.获取第一个子元素节点

语法:element.firstElementChild

6.获取最后一个子元素节点

语法:element.lastElementChild

    <div>
        <h5>content0</h5>
        <p>content1</p>
        <span>content2</span>
    </div>
    <script>
        //获取节点<div>
        var div = document.querySelector('div');
            //获取节点<div>下所有子节点
            console.log("节点<div>下所有子节点",div.childNodes);
            //获取节点<div>第一个子节点
            console.log("节点<div>第一个子节点",div.firstChild);
            //获取节点<div>最后一个子节点
            console.log("节点<div>最后一个子节点",div.lastChild);
            //获取节点<div>下所有子元素子节点
            console.log("节点<div>下所有子节点",div.children);
            //获取节点<div>第一个子元素子节点
            console.log("节点<div>第一个子节点",div.firstElementChild);
            //获取节点<div>最后一个子元素子节点
            console.log("节点<div>最后一个子节点",div.lastElementChild);   
    </script>

        注意:所有子节点包括空格换行符等文本节点!

获取兄弟节点

1.获取上一个兄弟节点

语法:element.previousSibling

2.获取下一个兄弟节点

语法:element.nextSibling

3.获取上一个兄弟元素节点

语法:element.previousElementSibling

4.获取下一个兄弟元素节点

语法:element.nextElementSibling

    <div>
        <h5>content0</h5>
        <p>content1</p>
        <span>content2</span>
    </div>
    <script>  
        //获取节点<p>
        var p = document.querySelector('p');
            //获取节点<p>上一个兄弟节点
            console.log("节点<p>上一个兄弟节点",p.previousSibling);
            //获取节点<p>下一个兄弟节点
            console.log("节点<p>下一个兄弟节点",p.nextSibling);
            //获取节点<p>上一个兄弟元素节点
            console.log("节点<p>上一个兄弟元素节点",p.previousElementSibling)
            //获取节点<p>下一个兄弟元素节点
            console.log("节点<p>下一个兄弟元素节点",p.nextElementSibling)
    </script>

         同样的,也要注意空格和换行等文本节点

创建节点方式

        创建节点方式属于动态创建,有三种方式,其特点如下:

1.document.write()

    <div></div>
    <script>
        //写入节点span
        document.write("<div><span>span content</span></div>"); 
    </script>

        页面成功显示span content文本内容 ,使用该方式创建元素,当页面文档流加载完毕,再次调用会导致页面重绘

2.element.innerHTML

    <div></div>
    <script>
        //找到div元素
        var div = document.querySelector('div');
        //写入节点
        div.innerHTML =` <p>p content</p>`;
        //输出div元素
        console.log(div.childNodes); //NodeList(2) [text, p]
    </script>

         使用该方法将节点加入元素中,导致页面部分重绘,不会导致页面全部重绘

3.document.createElement()

    <script>
        //创建<button>
        var btn = document.createElement("BUTTON");
        //输出
        console.log(btn); //<button></button>
    </script>

        使用该方式创建节点结构清晰效率高,但创建多个元素效率稍低

添加节点方式

        添加节点有两种位置方式可以进行增添

1.appendChild():添加节点到指定父节点的已有子节点末尾

2.insertBefore(child,指定元素):添加节点到指定父节点的指定子节点首部

    <div>
        <ul id="add">
            <li>content1</li>
            <li>content2</li>
            <li>content3</li>
        </ul>
    </div>
    <span>添加尾部元素</span>
    <p>添加首部元素</p>
    <script>
        //获取<span>
        var span = document.querySelector('span');
        //添加节点到指定父节点的已有子节点末尾
        document.querySelector('ul').appendChild(span);

        //获取<p>
        var p = document.querySelector('p');
        //获取<ul>
        var ul = document.querySelector('ul');
        //获取<li>
        var lis = ul.querySelectorAll('li') 
        //添加节点到指定父节点的已有子节点首部
        document.querySelector('ul').insertBefore(p,lis[1]);
    </script>

        网页渲染效果:

删除节点方式

        删除节点方式可以删除指定节点

语法:removeChild(child)

        我们在上面添加节点的代码中做出删除动作

        //删除节点
        ul.removeChild(lis[2]);

         最终删除第三个<li>样式,网页呈现效果如下:

克隆节点方式

        在之前的博客中我们有自己讲深拷贝与浅拷贝,在这里,这种克隆节点方式也分为深拷贝与浅拷贝两种拷贝方式

 语法:node.cloneNode(true/false)

                true:深拷贝,复制节点本身和所有子节点

                false(或空):浅拷贝,只复制节点本身

    <ul>
        <li>content1</li>
        <li>content2</li>
        <li>content3</li>
    </ul>
    <script>
        //克隆节点
        var ul = document.querySelector('ul');
        //深拷贝
        var deepCopy = ul.cloneNode(true);
        console.log("深拷贝:",deepCopy)
        //浅拷贝
        var shallowCopy = ul.cloneNode(false);
        console.log("浅拷贝:",shallowCopy)
    </script>

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值