DOM遍历

博客主要介绍了DOM遍历节点树的方法,包括parentNode、childNodes等,还提及节点类型。同时阐述了遍历元素节点树的方式,如parentElement、children等,部分方法在IE9以下不兼容。此外,介绍了节点的属性,如nodeName、nodeValue等,以及查看元素是否有节点的方法。

DOM遍历节点树

1,parentNode

2,childNodes,子节点们

之所以是7个,看一下节点类型

1,元素节点-------1

2,属性节点-------2

3,文本节点-------3

4,注释节点-------8,

5,document------9

6,DocumentFragment-------11

灰色区域是第1个文本节点

第二个是元素节点

第三个是文本节点

以此类推,一共有7个节点,

3,firstChild,lastChild

第一个子节点和最后一个节点

4,nextSibling,previousSibling

后一个兄弟节点,前一个兄弟节点

----------------------------------------------------------------------------------------------------------------

遍历元素节点树

1,parentElement (IE9以下不兼容)

2,children

3,childElementCount === node.children.length 当前元素节点的子元素节点的个数 (IE9以下不兼容)

4,firstElementChild,lastElementChild  (IE9以下不兼容)

返回第一个元素节点和最后元素节点

5,nextElementSibling / previousElementSibling (IE9以下不兼容)

返回后一个 / 前一个兄弟元素

----------------------------------------------------------------------------------------------------------------------

节点的属性

1,nodeName

元素的标签名,只读

2,nodeValue

只有文本节点,和comment(注释)节点有,可读,可写

3,nodeType

节点的类型,只读

他返回的是一个数值,比如元素节点是1

4,attributes

属性节点的内属性的集合

5,是一个方法 hasChileNodes() 

查看某一元素是否有节点

 

### 遍历 DOM 元素并统计页面中的单词数量 在 JavaScript 中,遍历 DOM 元素并统计页面中单词数量可以通过以下方式实现。首先,遍历页面中的所有文本节点,然后提取文本内容,最后对文本中的单词进行统计。 #### 遍历 DOM 元素 为了遍历页面中的所有文本节点,可以使用递归方法遍历 DOM 树。以下是一个遍历 DOM 元素的示例代码: ```javascript function traverseDOM(node) { if (node.nodeType === Node.TEXT_NODE) { // 处理文本节点 console.log(node.textContent); } else { // 遍历子节点 for (let child of node.childNodes) { traverseDOM(child); } } } // 从 document.body 开始遍历 traverseDOM(document.body); ``` 此代码通过递归方式遍历 `document.body` 下的所有子节点,并检查每个节点的类型。如果节点是文本节点(`Node.TEXT_NODE`),则提取其内容进行处理。 #### 统计单词数量 在提取文本内容后,需要将文本分割为单词并统计数量。以下是一个统计单词数量的示例代码: ```javascript function countWords(text) { // 使用正则表达式匹配单词 const words = text.match(/\b\w+\b/g); return words ? words.length : 0; } function traverseAndCountWords(node) { let totalWordCount = 0; if (node.nodeType === Node.TEXT_NODE) { // 统计当前文本节点的单词数量 totalWordCount += countWords(node.textContent); } else { for (let child of node.childNodes) { totalWordCount += traverseAndCountWords(child); } } return totalWordCount; } // 从 document.body 开始遍历并统计单词数量 const wordCount = traverseAndCountWords(document.body); console.log(`页面中的单词总数为: ${wordCount}`); ``` 上述代码通过 `countWords` 函数统计每个文本节点中的单词数量,并将所有文本节点的结果相加,最终输出页面中的单词总数。 #### 使用 `Node.childNodes` 和 `Node.nodeType` 在遍历过程中,`Node.childNodes` 属性返回一个包含当前节点所有子节点的类数组对象。通过检查 `nodeType`,可以确定当前节点的类型。例如,`Node.TEXT_NODE` 表示文本节点,而 `Node.ELEMENT_NODE` 表示元素节点。 需要注意的是,遍历 DOM 树时应避免使用 `for..in` 循环,因为 `for..in` 会遍历所有可枚举的属性,包括一些额外的属性,这可能导致意外的结果。 #### 示例代码 以下是一个完整的示例代码,展示了如何遍历 DOM 元素并统计页面中的单词数量: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DOM 遍历与单词统计</title> </head> <body> <h1>这是一个示例标题</h1> <p>这是一个段落,包含一些文本内容。</p> <p>这是另一个段落,包含更多的文本内容。</p> <script> function countWords(text) { const words = text.match(/\b\w+\b/g); return words ? words.length : 0; } function traverseAndCountWords(node) { let totalWordCount = 0; if (node.nodeType === Node.TEXT_NODE) { totalWordCount += countWords(node.textContent); } else { for (let child of node.childNodes) { totalWordCount += traverseAndCountWords(child); } } return totalWordCount; } const wordCount = traverseAndCountWords(document.body); console.log(`页面中的单词总数为: ${wordCount}`); </script> </body> </html> ``` 此代码通过遍历 `document.body` 下的所有文本节点,统计页面中的单词数量,并在控制台输出结果。 #### 注意事项 - 在遍历 DOM 树时,应避免使用 `document.writeln` 或 `alert` 等方法,因为这些方法可能会影响页面的渲染和性能。 - 如果需要处理复杂的 DOM 操作,建议使用 `querySelector` 或 `querySelectorAll` 方法获取元素,而不是使用传统的 `getElementById` 或 `getElementsByClassName` 方法。 - 在统计单词数量时,应使用正则表达式匹配单词,以确保统计结果的准确性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值