给出以下HTML(仅作为示例):
<div id="container"><span>This is <strong>SOME</strong> great example, <span style="color: #f00">Fred!</span></span></div>
可以使用例如提取文本jQuery的text()
函数:
var text = $('container').text();
现在,确定提取文本中的偏移10
对应于2
内文本节点的偏移<strong>SOME</strong>
的最简单,最快速,最优雅的方法是什么?上面例子中的节点?另外,如何做反向,即从10
DOM对象和偏移<strong>
中确定提取文本中的偏移2
?
答案 0 :(得分:2)
这是一个开始。您可以使用TreeWalker获得非常优雅的解决方案。您需要为IE实现TreeWalker
(假设您需要IE支持)。
function findOffset(node, initialOffset) {
var offset = initialOffset;
var walker = node.ownerDocument.createTreeWalker(node, NodeFilter.SHOW_TEXT);
while(walker.nextNode()) {
var text = walker.currentNode.nodeValue;
if (text.length > offset) {
return { node: walker.currentNode.parentNode, offset: offset };
}
offset -= text.length;
}
return { node: node, offset: initialOffset };
}
现在反过来......