4

假设我有一些带有未标记内容的 HTML,例如:

<html>
<body>
<p>text in a tag</p>
other text outside any tag
</body>
</html>

我怎样才能到达未标记的元素?甚至 document.getElementsByTagName('*') 也不包含未标记的元素。

TIA

4

2 回答 2

3

就您而言,您可以简单地做

document.getElementById('body').lastChild

但是,在更一般的情况下,您需要遍历孩子并检查

a = document.getElementById('body').lastChild

console.log(a.nodeType) // 3
console.log(a.nodeName) // #text

这是关于jsfiddle的示例

于 2012-08-16T10:08:48.520 回答
1

我建议使用该.nodeType属性,该属性将根据返回的节点类型返回一个整数值。文本节点返回值 3。元素节点返回值 1 被警告,但是您内部的文本<p>算作其自己的节点,nodeType 为 3。

考虑到这一点,如果您正在寻找属于您的 body 元素的子元素的 textNodes,那么以下几行的内容应该可以工作。

var nodes = document.getElementByTagName('body').childNodes
for (i=0; i < nodes.length; i++)
{
 if(nodes.childNode[i].nodeType == 3)
 {
 //THIS NODE IS A TEXT NODE OF THE BODY ELEMENT
 //DO WHAT YOU NEED WITH IT
 }
}

MDN 节点类型文档

于 2012-08-16T10:13:58.503 回答