如何获取 html 树的 #text 节点数组
How can I get array of #text nodes of the html tree
我需要将 html 正文的所有 #text 元素用作数组。
富文本可以有不同的层次,所以我需要到达最低的元素。
例如,对于下面的文本,我希望有一个包含 8 个元素的数组。
获取#文本节点的名称或标签或方法是什么?
您可以递归扫描节点并将文本节点推入数组。
const textNodes = []
function pushTextNode(node) {
if (node.nodeName === "#text") {
const nodeVal = node.nodeValue.trim();
if (nodeVal) {
textNodes.push(nodeVal);
}
return;
}
node.childNodes.forEach((childNode) => {
pushTextNode(childNode)
});
}
pushTextNode(document.querySelector("#root"));
console.log(textNodes);
<div id="root">
<span>
0
<b>
12<u>3</u>
</b>
<u>
4<b>5</b>
</u>
<b>67</b>8<a href="#">9</a>
</span>
</div>
您需要指定第一个父标签并使用 innerText 属性。
<script>
var text = document.getElementsByTagName("body")[0].innerText;
console.log(text.replace(/(\r\n|\n|\r|\t|\s)/gm, ''));
</script>
或者如果你想使用 jquery ,你可以这样做。
console.log($("body span").text().replace(/(\r\n|\n|\r|\t)/gm, ''));
//find the textnode like this//
const textNodes=document.querySelector("content");
//[put on a variable]//
//using this statement //
Array.from(textNodes).map((content)=>{
//now add eventlistener//
content.addEventListener("//event type//",functionHandler);
});
function functionHandler(e){
//do anything what you need//
}
我需要将 html 正文的所有 #text 元素用作数组。 富文本可以有不同的层次,所以我需要到达最低的元素。 例如,对于下面的文本,我希望有一个包含 8 个元素的数组。
获取#文本节点的名称或标签或方法是什么?
您可以递归扫描节点并将文本节点推入数组。
const textNodes = []
function pushTextNode(node) {
if (node.nodeName === "#text") {
const nodeVal = node.nodeValue.trim();
if (nodeVal) {
textNodes.push(nodeVal);
}
return;
}
node.childNodes.forEach((childNode) => {
pushTextNode(childNode)
});
}
pushTextNode(document.querySelector("#root"));
console.log(textNodes);
<div id="root">
<span>
0
<b>
12<u>3</u>
</b>
<u>
4<b>5</b>
</u>
<b>67</b>8<a href="#">9</a>
</span>
</div>
您需要指定第一个父标签并使用 innerText 属性。
<script>
var text = document.getElementsByTagName("body")[0].innerText;
console.log(text.replace(/(\r\n|\n|\r|\t|\s)/gm, ''));
</script>
或者如果你想使用 jquery ,你可以这样做。
console.log($("body span").text().replace(/(\r\n|\n|\r|\t)/gm, ''));
//find the textnode like this//
const textNodes=document.querySelector("content");
//[put on a variable]//
//using this statement //
Array.from(textNodes).map((content)=>{
//now add eventlistener//
content.addEventListener("//event type//",functionHandler);
});
function functionHandler(e){
//do anything what you need//
}