`, `
`, `
第一个段落
第二个段落
`元素节点
一个文本节点(包含换行符和空格)
第二个`
`元素节点
一个文本节点(包含换行符和空格)
如果你执行`body.childNodes.length`,得到的结果就会比你期望的“只包含p标签”要多,因为它把那些换行符和空格也算作了文本节点。
最后一个 `text` 节点的含义: 当你提到“最后一个text”时,你可能是在指代`
一些内容
`元素。
4. 获取最后一个元素节点的正确方式: 如果你的目的是获取`body`标签下的最后一个 HTML 元素节点,那么你应该使用`body.children`。`body.children`会忽略所有的文本节点和注释节点,只返回元素节点。
`body.children` 会返回一个HTMLCollection,其中包含了所有子元素节点。
要获取最后一个元素节点,你可以使用 `body.children[body.children.length 1]` 或者更简洁的 `body.lastElementChild`。
5. 如果你确实需要最后一个文本节点: 如果你的目的是在`body`的`childNodes`列表中找到那个被你称为“最后一个text”的节点,那么你可能需要遍历`body.childNodes`,并检查每个节点的`nodeType`属性。
`nodeType === 3` 表示这是一个文本节点。
你可以从列表的末尾开始向前遍历,找到第一个`nodeType === 3`的节点。
总结来说:
`childNote.length`(这里假设 `childNote` 是一个 NodeList,例如 `body.childNodes`)获取的是`body`元素下所有类型的子节点(包括元素、文本、注释等)的数量。如果你只关心其中的文本节点,或者特别是最后一个文本节点,直接用`.length`是不够的,你需要通过遍历`childNodes`并检查`nodeType`来精确地找到你想要的文本节点。而如果你想要的是最后一个元素节点,那么`body.children.length`或`body.lastElementChild`才是正确的选择,因为它们过滤掉了文本节点。
理解DOM的节点类型和JavaScript提供的不同遍历方式是解决这类问题的关键。
因为 script 是立即执行的,你 alert 的时候,body 元素里的最后一个元素还是 script 元素,后面的文本节点还没有被 parse 和生成。
你可以把 alert 放到 DOMContentLoaded 事件里,然后再跑,输出的就是 5 了。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有