我正在尝试仅忽略元素的后代来获取元素文本内容,例如,如果您查看此 HTML:
<p>hello <h1> World </H1> </p>
对于元素“P”,正确的输出应该是“hello”。
我检查了函数:“element.textContent”,但这会返回节点及其后代的文本内容(在我的示例中,它将返回“hello world”)。
谢谢,
我正在尝试仅忽略元素的后代来获取元素文本内容,例如,如果您查看此 HTML:
<p>hello <h1> World </H1> </p>
对于元素“P”,正确的输出应该是“hello”。
我检查了函数:“element.textContent”,但这会返回节点及其后代的文本内容(在我的示例中,它将返回“hello world”)。
谢谢,
考虑到这个 HTML:
<div id="gettext">hello <p> not this </p> world?</div>
你想提取“你好”和“世界”吗?如果是,那么:
var div = document.getElementById('gettext'), // get a reference to the element
children = [].slice.call(div.childNodes), // get all the child nodes
// and convert them to a real array
text = children.filter(function(node){
return node.nodeType === 3; // filter-out non-text nodes
})
.map(function( t ){
return t.nodeValue; // convert nodes to strings
});
console.log( text.join('') ); // text is an array of strings.
背后有一个解释
$("p").clone() //clone element
.children() //get all child elements
.remove() //remove all child elements
.end() //get back to the parent
.text();
我的答案与其他几个答案中提供的答案相同。但是,让我尝试提供一个解释。
<p >hello<h1>World</h1> </p>
此行将呈现为
你好
如果您查看此代码,它将如下所示
<p>hello</p>
<h1>World</h1>
<p></p>
如果段落后跟一个元素,则
使用<p>
标签您不一定需要结束标签。检查这篇文章</p>
现在您只需使用以下代码即可选择第一个 p 标签的内容
var p = document.getElementsByTagName('p');
console.log(p[0].textContent);
纯文本被视为名为 的节点#text
。您可以使用childNodes
元素的属性p
并检查其中nodeName
每个项目的属性。您可以遍历它们并仅选择#text
节点。
下面的函数循环遍历文档中的所有元素并仅打印#text
项目
function myFunction()
{
var txt="";
var c=document.body.childNodes;
for (i=0; i<c.length; i++)
{
if(c[i].nodeName == "#text")
txt=txt + c[i].nodeName + "<br>";
};
return txt;
}
编辑:
正如@VisioN 在评论中所说,使用nodeType
更安全(为了浏览器兼容性)并推荐使用。
将您的 html 更改为
<p id="id1">hello <h1> World </h1> </p>
使用这个脚本,
alert(document.getElementById("id1").firstChild.nodeValue);
尝试为要对其进行一些操作的元素提供 id。
Below is the working example, it show output as "hello" as you expected.
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function showParagraph()
{
alert(document.getElementById('test').innerHTML);
}
</script>
</head>
<body>
<p id="test">hello <h1> World </H1> </p>
<input type="button" onclick="showParagraph()" value="show paragraph" />
</body>
</html>