在段落祖先的字符数处确定 textNode
Determine textNode at character number of paragraph ancestor
假设我们有以下 HTML:
<p>1234<strong>5678</strong>.</p>
假设如果我们想将“234”视为一个选择,它的 相对于 p
父元素的索引 将是 1-3(使用 0 作为起始指数)。
如何确定段落的字符索引 7 处的节点(例如 textNode
)?
显而易见的答案是 textNode
属于 strong
元素:假设文本是 no 选择(例如,有没有 window.getSelection()
) 参考?
事实证明这实际上比我想象的要容易一些,但是它可能有局限性(欢迎其他人扩展)。
var tl = 0;//text length, increment per node's textContent.length
for (var i = 0; i < element.childNodes.length; i++)
{
console.log(i+' = '+ac.childNodes[i].textContent.length);
tl = (tl + element.childNodes[i].textContent.length);
}
所以当长度突然等于或大于我们正在寻找的任何字符索引引用时,我们可以使用break
。
可能存在多个嵌套节点的复杂性,例如 em
元素嵌套在 strong
元素中,欢迎其他人对其进行扩展。
假设我们有以下 HTML:
<p>1234<strong>5678</strong>.</p>
假设如果我们想将“234”视为一个选择,它的 相对于 p
父元素的索引 将是 1-3(使用 0 作为起始指数)。
如何确定段落的字符索引 7 处的节点(例如 textNode
)?
显而易见的答案是 textNode
属于 strong
元素:假设文本是 no 选择(例如,有没有 window.getSelection()
) 参考?
事实证明这实际上比我想象的要容易一些,但是它可能有局限性(欢迎其他人扩展)。
var tl = 0;//text length, increment per node's textContent.length
for (var i = 0; i < element.childNodes.length; i++)
{
console.log(i+' = '+ac.childNodes[i].textContent.length);
tl = (tl + element.childNodes[i].textContent.length);
}
所以当长度突然等于或大于我们正在寻找的任何字符索引引用时,我们可以使用break
。
可能存在多个嵌套节点的复杂性,例如 em
元素嵌套在 strong
元素中,欢迎其他人对其进行扩展。