给出一个简单的结构,如下所示:
<td><span>Text1</span></td>
<td><span>Text2</span></td>
<td><span>Text3</span></td>
<td><span><a href='#'>Link</a>Text4</span></td>
我正在尝试使用Java脚本提取所有Text1-4,而没有任何子节点。
...
x = rows[i].getElementsByTagName("TD")[n].getElementsByTagName('span')[0];
...
Test1
Test2
Test3
<a href='#'>Link</a>Text4
是否有一种简单的方法来“忽略”元素的html标签?
我尝试过
if(x.hasChildNodes()){
x = rows[i].getElementsByTagName("TD")[n].getElementsByTagName('span')[0].getElementsByTagName('a')[0];
}
但这显然给了我Link
答案 0 :(得分:1)
使用.innerText
为您获取文本和所有嵌套文本,并以div
替换td
为您的示例,我只是添加了它以显示结果
const tags = document.querySelectorAll('div > span');
tags.forEach(tag => {
const nodes = tag.childNodes;
nodes.forEach(node => {
if(node.nodeType === node.TEXT_NODE) {
console.log(node.nodeValue);
}
});
});
<div><span>Text1</span></div>
<div><span>Text2</span></div>
<div><span>Text3</span></div>
<div><span><a href='#'>Link</a>Text4</span></div>