/*----------------------------------------*\ * 使用 js 标记高亮关键词 by markcxz(markcxz@aol.com) * 参数说明: * obj: 对象, 要进行高亮显示的html标签节点. * hlWords: 字符串, 要进行高亮的关键词词, 使用 竖杠(|)或空格 分隔多个词 . * cssClass: 字符串, 定义关键词突出显示风格的css伪类. * 参考资料: javascript HTML DOM 高亮显示页面特定字词 By shawl.qiu \*----------------------------------------*/ function MarkHighLight(obj,hlWords,cssClass){ hlWords=AnalyzeHighLightWords(hlWords); if(obj==null || hlWords.length==0) return; if(cssClass==null) cssClass="highlight"; MarkHighLightCore(obj,hlWords); //------------执行高亮标记的核心方法---------------------------- function MarkHighLightCore(obj,keyWords){ var re=new RegExp(keyWords, "i"); for(var i=0; i$1"); if(childObj.data == objResult.childNodes[0].innerHTML) continue; obj.replaceChild(objResult,childObj); }else if(childObj.nodeType==1){ MarkHighLightCore(childObj,keyWords); } } } //----------分析关键词---------------------- function AnalyzeHighLightWords(hlWords) { if(hlWords==null) return ""; hlWords=hlWords.replace(/\s+/g,"|").replace(/\|+/g,"|"); hlWords=hlWords.replace(/(^\|*)|(\|*$)/g, ""); if(hlWords.length==0) return ""; var wordsArr=hlWords.split("|"); if(wordsArr.length>1){ var resultArr=BubbleSort(wordsArr); var result=""; for(var i=0;i=i;j--){ if((arr[j+1].length)>(arr[j]).length){ temp=arr[j+1]; arr[j+1]=arr[j]; arr[j]=temp; exchange=true; } } if(!exchange)break; } return arr; } } //----------------end------------------------