You can recursively scan through the nodes and push the text nodes into an array.
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>
You need to specify the first parent tag and use innerText attribute.
<script>
var text = document.getElementsByTagName("body")[0].innerText;
console.log(text.replace(/(\r\n|\n|\r|\t|\s)/gm, ''));
</script>
or if you want to use jquery , you can do like this.
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//
}