Javascript E4X-返回节点及其子节点的文本
Javascript E4X - Return the text of node and its children?
我正在尝试解析一些html,其中有重复的代码行,例如:
<a>This is <span>some text</span> but its <span>not grabbing the span</span> content</a>
所以我循环浏览这个对象并提取这个:
object.a[i].text();
但它唯一返回的
"This is but its content"
如何获取子节点中的文本,所有这些都作为一个字符串?
干杯
我不知道E4X,但我可以假设纯JavaScript是可以的吗?
textContent
似乎与版本9之前的IE没有很好的兼容性。当textContent
可用时,此操作有效。然而,我没有IE8,所以我不能用它进行测试,但这也应该有效。
var obj = (!object.a[i].innerText) ? object.a[i].textContent : object.a[i].innerText;
这在客户端实现中有效,但由于它在您的实现中不起作用,我想您将需要更具体的设置;不幸的是,我在那里无能为力。然而,我将再举一个纯JS的例子。它遍历object.a[I]的每个子节点,确定它是textNode还是elementNode,并分别提取数据或innerHTML。
var doesThisWork = '';
var children = object.a[i].childNodes;
for(x in children){
doesThisWork += (children[x].nodeType === 1) ? children[x].innerHTML : children[x].data;
}
我将离开jQuery版本:
.内容:
object.a[i].contents().text();
在Rhino中,这将起作用:
var a = <a>This is <span>some text</span> but its <span>not grabbing <b>the</b> span</span> content</a>;
print(XML_innerText(a));
function XML_innerText(node) {
var result = [];
for each (var i in node.descendants()) {
if (i.nodeKind() == 'text') {
result.push(i);
}
}
return result.join(' ');
}
在ecma/js的更高级变体中,您可以使用相同的代码,但将其移动到XML.prototype.innerText中,然后直接调用类似a.innerText()
的代码。
相关文章:
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- js循环遍历单击的元素子节点
- 如何将数据添加到json的子节点
- 删除HTML节点而不删除其子节点
- 如何在javascript DOM api中获取具有给定条件的子节点
- 仅使用某些子节点访问xml中父节点的子节点
- 检测单击子节点并发送槽事件处理程序
- 使用Javascript设置带有子节点的父节点的类's文本等于.
- 在没有 jquery 的情况下更改子节点(父节点具有 ID)中的链接文本
- Javascript E4X-返回节点及其子节点的文本
- 更改子节点中的文本
- SVG 子节点返回文本
- DOM 附加文本节点的子节点不起作用
- 在子节点之前预置文本
- 文本节点和子节点
- Javascript检查子节点是元素节点还是文本节点
- 替换节点顶层的文本而不破坏子节点的格式
- 如何从文本获得子节点
- 设置跨度文本节点的样式而不设置子节点的样式
- 如何从跨度获取自己的文本,而不是检索其子节点的文本