给定提取的组合文本字符串中的偏移量,如何确定包含节点和偏移量
Given an offset in an extracted combined text string, how to determine containing node and offset?
给定以下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
对应于上面示例中<strong>SOME</strong>
节点中的文本节点的偏移量2
的最简单,最快,最优雅的方法是什么?此外,如何做反向,即确定从<strong>
DOM对象中提取的文本中的偏移量10
和偏移量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 };
}
演示相关文章:
- 添加新数据时D3.JS条形图列偏移量
- 当偏移量改变时滚动顶部
- 引导数据偏移量底部
- 可以在调整窗口大小时重新调整stellar.js的元素偏移量
- 可滚动元素,如何在调整大小时更改顶部偏移量
- 使用JavaScript日期的任何时间的时区偏移量
- 时刻时区:UTC 偏移量差异
- jQuery偏移量顶部没有'工作不正常
- 如何获取当前时区偏移量(并正确格式化)
- d3.mouse 偏移量返回的值不正确
- jQuery根据鼠标位置计算DIV偏移量和边界
- 更改 for 循环中 SVG 行的笔触虚线偏移量
- 时区偏移量计算
- jquery 如何设置偏移量 () 值
- 在javascript中向本地时间戳添加时间戳偏移量
- jquery ui draggable中的奇怪偏移量
- 如何在发布JavaScript日期对象时保留时区偏移量
- 确定数组中偏移量的最快方法
- 给定提取的组合文本字符串中的偏移量,如何确定包含节点和偏移量
- 在任何时间日期选择器中以编程方式设置时区偏移量