Javascript 在html字符串(包括换行符)中匹配要选择并高亮显示的单词

Javascript 在html字符串(包括换行符)中匹配要选择并高亮显示的单词,javascript,indexing,syntax-highlighting,Javascript,Indexing,Syntax Highlighting,我有一段代码(如下所示),它查找字符串中的第一个索引和最后一个索引,然后选择并突出显示html中的单词 当html中包含换行符时,它不起作用。此外,如果字符串的第一个索引不是0,它将在最后一个索引中添加一个额外的字符 函数myFunction(){ var html=stripHTML(document.getElementById(“test”); //var html=document.getElementById(“测试”).textContent; var search_value=d

我有一段代码(如下所示),它查找字符串中的第一个索引和最后一个索引,然后选择并突出显示html中的单词

当html中包含换行符时,它不起作用。此外,如果字符串的第一个索引不是0,它将在最后一个索引中添加一个额外的字符

函数myFunction(){
var html=stripHTML(document.getElementById(“test”);
//var html=document.getElementById(“测试”).textContent;
var search_value=document.getElementById(“textbox”).value;
var regex=new RegExp(搜索值,'g');
var text=html;
警报(文本);
while((match=regex.exec(text))!=null){
var mix=match.index+match[0]。长度
警报(“在:“+match.index+”上找到匹配:“+mix”);
setSelectionRange(document.getElementById(“测试”)、match.index、match.index+match[0]。长度);
突出显示(“黄色”);
}
}
函数stripHTML(文本){
返回text.innerText.replace(/\r\n |\r |\n/g,“”)。replace(/\s\s+/gm,“”);
}
函数getTextNodesIn(节点){
var textNodes=[];
if(node.nodeType==3){
textNodes.push(节点);
}否则{
var children=node.childNodes;
for(变量i=0,len=children.length;i如果(!foundStart&&start>=charCount&&(start==endCharCount | | |)(start==endCharCount&&i jsem)看起来像是您正在寻找的
AcrosElements
选项–它将允许您跨文本节点搜索是的,我知道markjs,但旧浏览器不支持它,我需要跨浏览器解决方案