JavaScript 中 Node类型(属性)

本文详细介绍了DOM中的Node接口,包括节点类型的分类如文档节点、元素节点等,以及Node接口的常见属性如nodeType、nodeName、nodeValue、textContent、nextSibling、previousSibling、parentNode和parentElement等。这些属性帮助开发者在JavaScript中操作和遍历DOM树,例如获取节点名称、文本内容、相邻节点以及父节点等信息。
摘要由CSDN通过智能技术生成

目录

Node类型概念:

2.Node类型的属性:

        1.nodeType属性返回一个整数值,表示节点的类型,常用节点类型如下:

        2.node.Name属性:

        3.nodeValue(可读可写)

        4.textContent属性

        5.nextSibling

        6.previousSibling

        7.parentNode

        8.parentElement

        9.firstChild和lastChild

        10.childNodes


Node类型概念:

        DOM Level 1 描述了名为 Node 的接口,这个接口是所有 DOM 节点类型都必须实现的。Node 接口在 JavaScript中被实现为 Node 类型,在除 IE之外的所有浏览器中都可以直接访问这个类型。在 JavaScript中,所有节点类型都继承 Node 类型,因此所有类型都共享相同的基本属性和方法。

2.Node类型的属性:

        1.nodeType属性返回一个整数值,表示节点的类型,常用节点类型如下:

节点类型   值对应常量
文档节点(document9Node.DOCUMENT_NODE
元素节点(element)1Node.ELEMENT_NODE
属性节点(attr)2Node.ATTRIBUTE_NODE
文本节点(text)3 Node.TEXT_NODE
文档类型节点(DocumentType)10Node.DOCUMENT_TYPE_NODE
注释节点(Comment)8Node.COMMENT_NODE
档片断节点(DocumentFragment11Node.DOCUMENT_FRAGMENT_NODE

        2.node.Name属性:

                作用:返回节点的名称
                语法: 节点.Name
                返回值: 该节点的大写

代码模块展示:

<body>
    <div id="one"></div>
    <script>
        // 获取DOM元素
        const one = document.querySelector('#one')
        // nodeName 属性返回节点的名称 (大写)
        console.log(one.nodeName)  // DIV

    </script>
</body>

        3.nodeValue(可读可写)

                作用: nodeValue属性返回一个字符串,表示当前节点本身的文本值,该属性可读写只有文本节点(text)、注释节点(comment)和属性节点(attr)有文本值.
                语法: 节点.nodeValue
                返回值: 读取到的内容字符串 

代码模块展示:

<body>
    <div id="one">hello world</div>
    <script>
        // 获取DOM元素
        const one = document.querySelector('#one')
        // nodeValue属性返回一个字符串,表示当前节点本身的文本值,该属性可读写只有文本节点(text)、注释节点(comment)和属性节点(attr)有文本值.
        // 读:
        console.log(one.nodeValue) // null
        console.log(one.firstChild.nodeValue) // hello world
        // 写
        one.firstChild.nodeValue = 'nihao'
        console.log(one.firstChild.nodeValue) // nihao
        

    </script>
</body>

        4.textContent属性

                作用: textContent属性返回当前节点和它的所有后代节点的文本内容
                语法: 节点.textContent
                返回值: 当前节点和它的所有后代节点的文本内容

代码模块展示:

<body>
    <div id="one">
        hello world
        <div class="child">nihao</div>
    </div>
    <script>
        // 获取DOM元素
        const one = document.querySelector('#one')
        // textContent
        // textContent 属性返回当前节点和它的后代节点的文本内容
        console.log(one.textContent)
        // 结果:
        // hello world
        // nihao
        // textContent 返回的值包括空格和回车

    </script>
</body>

        5.nextSibling

                作用: 返回紧跟在当前节点后面的第一个同级节点。如果当前节点后面没有同级节点,则返回null
                注意: 可能会获取到“空格”或“回车”这样的文本节点
                语法: 节点.nextSibling
                返回值: 紧跟在当前节点后面的第一个同级节点。如果当前节点后面没有同级节点,则返回null

代码模块展示:

<body>
    <div id="one"><div id="two">niaho</div><div class="child">nihao</div></div>
    <span></span>
    <script>
        // 获取DOM元素
        const two = document.querySelector('#two')
        const one = document.querySelector('#one')
        const span = document.querySelector('span')
        const child = document.querySelector('.child')
        // nextSibling
        // nextSibling 属性返回紧跟在当前节点后面的同级节点,如果家节点后面没有同级节点,则返回null
        // 注意:nextSibling 也会取到"空格" 或 "回车" 这样的文本节点
        console.log(two.nextSibling) // <div class="child">nihao</div>
        // 当后面时回车时 则会获取到 \n
        console.log(one.nextSibling) // \n

        
    </script>
</body>

​

        6.previousSibling

                作用: previousSibling属性返回当前节点前面的、距离最近的一个同级节点。如果当前节点前面没有同级节点,则返回null
                注意: 可能会获取到“空格”或“回车”这样的文本节点
                语法: 节点.previousSibling
                返回值: 当前节点前面的、距离最近的一个同级节点。如果当前节点前面没有同级节点,则返回null

代码模块展示:

<body>
    <div id="one"><div id="two">niaho</div><div class="child">nihao</div></div>
    <span></span>
    <script>
        // 获取DOM元素
        const two = document.querySelector('#two')
        const one = document.querySelector('#one')
        const span = document.querySelector('span')
        const child = document.querySelector('.child')
       
        // previousSibling
        // previousSibling属性返回当前节点前面的、距离最近的一个同级节点。如果当前节点前面没有同级节点,则返回null
        // 注意:previousSibling 也会取到"空格" 或 "回车" 这样的文本节点
        console.log(two.previousSibling) // null
        // 当后面时回车时 则会获取到 \n
        console.log(one.previousSibling) // "\n      "
        console.log(child.previousSibling) // <div id="two">niaho</div>



    </script>
</body>

        7.parentNode

                作用: 返回当前节点的父节点。对于一个节点来说,它的父节点只可能是三种类型:元素节点(element)、文档节点(document)和文档片段节点
                语法: 节点.parentNode()
                返回值: 返回当前节点的父节点

代码模块展示:

<body>
    <div id="one">
        hello world
        <div class="child">nihao</div>
    </div>
    <script>
        // 获取DOM元素
        const one = document.querySelector('#one')
        const child = document.querySelector('.child')
        // parentNode
        // parentNode 属性 返回当前节点的父节点,对于一个节点来说
        // 父节点的三种类型: 元素节点(element)、 文档节点(document) 和 文档片段节点(documentfragment)
        console.log(child.parentNode) // <div id="one">...</div>
        console.log(one.parentNode) // <body>...</body>
        console.log(document.parentNode)  // null
     

    </script>
</body>

        8.parentElement

                作用: parentElement属性返回当前节点的父元素节点。如果当前节点没有父节点,或者父节点类型不是元素节点,则返回null
                语法: 节点.parentElement
                返回值: 返回当前节点的父元素节点。如果当前节点没有父节点,或者父节点类型不是元素节点,则返回null

代码模块展示:

<body>
    <div id="one">
        hello world
        <div class="child">nihao</div>
    </div>
    <script>
        // 获取DOM元素
        const one = document.querySelector('#one')
        const child = document.querySelector('.child')
        
        
        // parentElement
        // parentElement 属性返回当前节点的父元素节点。如果当前节点没有父节点,或者父节点类型不是元素节点,则返回null
        console.log(child.parentElement)  // <div id="one">...</div>
        console.log(one.parentElement)  // <body>...</body>
        console.log(document.parentElement)  // null

    </script>
</body>

        9.firstChild和lastChild

            作用: firstChild属性返回当前节点的第一个子节点,如果当前节点没有子节点,则返回null,last则返回最后一个子节点。
            注意: 可能会获取到“空格”或“回车”这样的文本节点
            语法: 节点.firstChild / 节点.lastChild
            返回值: 当前节点的第一个子节点,如果当前节点没有子节点,则返回null,last则返回最后一个子节点。

代码模块展示:

<body>
    <div id="one">
        hello world
        <div class="child">nihao</div>
        <div class="child">nihao</div>
    </div>
    <div id="two"></div>
    <script>
        // 获取DOM元素
        const one = document.querySelector('#one')
        const child = document.querySelector('.child')
        const two = document.querySelector('#two')
        // firstChild 和 lastChild
        // firstChild属性返回当前节点的第一个子节点,如果当前节点没有子节点,则返回null,
        // lastChild属性返回当前节点的最后一个子节点,如果当前节点没有子节点,则返回null,
        // 注意: 空格 回车 也会获取到
        console.log(one.firstChild)  // "hello world"
        console.log(one.lastChild) // \n
        console.log(two.lastChild)  // null
    </script>
</body>

        10.childNodes

                作用: childNodes属性返回一个类似数组的对象(NodeList集合),成员包括当前节点的所有子节点
                注意: 会获取到“空格”或“回车”这样的文本节点
                语法: 节点.childNodes
                返回值: 返回一个类似数组的对象(NodeList集合),成员包括当前节点的所有子节点

代码模块展示:

<body>
    <div id="one">
        hello world
        <div class="child">nihao</div>
        <div class="child">nihao</div>
    </div>
    <div id="two"></div>
    <script>
        // 获取DOM元素
        const one = document.querySelector('#one')
        const child = document.querySelector('.child')
        const two = document.querySelector('#two')
        // childNodes
        // childNodes属性返回一个类似数组的对象(NodeList集合),成员包括当前节点的所有子节点
        // 注意:包括空格和回车
        console.log(one.childNodes)  //NodeList(5) [text, div.child, text, div.child, text]
        // 其中第一个text为:  "\n        hello world\n        "
        // 其中第三个text为: "\n        "
        // 最后一个text为:  "\n    "

        


    </script>
</body>


      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值