我有下面的javascript函数,当传递一个单词时,如"Department"将以红色突出显示屏幕上找到的"Department"的第一个实例。但是,我希望这段代码突出显示给定单词的所有实例。
function findString (str) {
var TRange=null;
var strFound;
var TRange = self.document.body.createTextRange();
TRange.findText(str);
TRange.execCommand('foreColor', false, "#ff0000");
return;
}
function findString (str) {
var TRange = document.body.createTextRange();
while (TRange.findText(str)){
TRange.execCommand("foreColor", false, "#ff0000");
TRange.collapse(false);
}
}
function findString (str) {
var TRange=null;
var strFound;
var TRange = self.document.body.createTextRange();
while(TRange.findText(str))
{
TRange.execCommand('foreColor', false, "#ff0000");
}
return;
}
这段代码似乎做到了这一点,但它是草率和有点过度。我相信一定有一个更短的方法来做到这一点,而不是在同一个函数中几乎重复我的execCommand行两次。
var TRange=null;
function findString (str) {
var strFound;
var counter = 0;
if (TRange==null || strFound==0) {
TRange=self.document.body.createTextRange()
strFound=TRange.findText(str)
if (strFound) {
TRange.execCommand('foreColor', false, "#ff0000");
}
}
TRange.collapse(false);
while (strFound=TRange.findText(str)) {
if (counter > 50){
alert("Search exceeded maximum limit of 50.");
return;
}
TRange.execCommand('foreColor', false, "#ff0000");
TRange.collapse(false);
counter += 1;
}
return;
}
看看这个链接:http://www.nsftools.com/misc/SearchAndHighlight.htm
在该页上使用的脚本与您正在采取的方法不同,但最终结果正是您正在寻找的。