目录
1.nodeType属性返回一个整数值,表示节点的类型,常用节点类型如下:
Node类型概念:
DOM Level 1 描述了名为 Node 的接口,这个接口是所有 DOM 节点类型都必须实现的。Node 接口在 JavaScript中被实现为 Node 类型,在除 IE之外的所有浏览器中都可以直接访问这个类型。在 JavaScript中,所有节点类型都继承 Node 类型,因此所有类型都共享相同的基本属性和方法。
2.Node类型的属性:
1.nodeType属性返回一个整数值,表示节点的类型,常用节点类型如下:
节点类型 | 值 | 对应常量 |
文档节点(document | 9 | Node.DOCUMENT_NODE |
元素节点(element) | 1 | Node.ELEMENT_NODE |
属性节点(attr) | 2 | Node.ATTRIBUTE_NODE |
文本节点(text) | 3 | Node.TEXT_NODE |
文档类型节点(DocumentType) | 10 | Node.DOCUMENT_TYPE_NODE |
注释节点(Comment) | 8 | Node.COMMENT_NODE |
档片断节点(DocumentFragment | 11 | Node.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>