Javascript 在不知道实际文本节点的情况下,通过int offset(开始-结束)突出显示HTML中的文本

Javascript 在不知道实际文本节点的情况下,通过int offset(开始-结束)突出显示HTML中的文本,javascript,highlight,Javascript,Highlight,我需要突出显示html中的一些文本,只给出开始和结束位置(整数,例如从第600个字符到第712个字符) 我可以使用and实现这一点,但这只有在我知道startNode和endNode的情况下才有效,它们可能是浅元素中的textNodes 是否可以在不知道这些节点的情况下突出显示文本? 如果不是,确定开始和结束节点的最佳解决方案是什么?一种解决方案是遍历DOM并计算字符数…您可以使用a从主div获取所有textNodes,然后遍历其textContent的长度以确定起点和终点的位置: var m

我需要突出显示html中的一些文本,只给出开始和结束位置(整数,例如从第600个字符到第712个字符)

我可以使用and实现这一点,但这只有在我知道
startNode
endNode
的情况下才有效,它们可能是浅元素中的
textNodes

是否可以在不知道这些节点的情况下突出显示文本?
如果不是,确定开始和结束节点的最佳解决方案是什么?一种解决方案是遍历DOM并计算字符数…

您可以使用a从主div获取所有
textNodes
,然后遍历其textContent的长度以确定起点和终点的位置:

var mainDiv=document.getElementById('main');
//创建接受所有textNodes的treewalker
var treeWalker=document.createTreeWalker(mainDiv,NodeFilter.SHOW_TEXT,null,false);
//包含文本节点的数组
var textNodeList=[];
while(treeWalker.nextNode())textNodeList.push(treeWalker.currentNode);
函数getRangeFromInt(开始、结束){
var indexSizeError='indexSizeError:索引或大小为负或大于允许的金额';

如果(开始>结束| | startHi,欢迎来到Stack Overflow!查看帮助中心,了解如何以正确的格式编写问题。编辑您的问题,向我们展示您迄今为止的尝试。您好@Slobodan,很可能您有一个示例,您正在使用
范围.setStart
范围.setEnd
来突出显示文本开始和结束节点?我有开始和停止值,我需要根据文档中的值突出显示文本。这是我使用的解决方案。老实说,我还没有听说过树行者,所以我自己实现了这个获取子树的过程。我将对此进行检查并重构代码以使用树行者。谢谢!