javascript - несколько CreateTextRange одновременно - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть нижеприведенная функция javascript, которая при передаче слова, такого как «Отдел», будет выделять красным цветом первый экземпляр «Отдела», найденный на экране.Тем не менее, я хотел бы, чтобы этот код выделил ВСЕ экземпляры данного слова.

function findString (str) { 
    var TRange=null;
    var strFound; 
    var TRange = self.document.body.createTextRange();
    TRange.findText(str);
    TRange.execCommand('foreColor', false, "#ff0000");
    return;
} 

Ответы [ 4 ]

1 голос
/ 07 апреля 2011
function findString (str) { 
    var TRange = document.body.createTextRange();

    while (TRange.findText(str)){
        TRange.execCommand("foreColor", false, "#ff0000");
        TRange.collapse(false);
    }
}
1 голос
/ 07 апреля 2011
function findString (str) { 
    var TRange=null;
    var strFound; 
    var TRange = self.document.body.createTextRange();

    while(TRange.findText(str))
    {
        TRange.execCommand('foreColor', false, "#ff0000");
    }

    return; 
    } 
1 голос
/ 07 апреля 2011

Этот код, кажется, сделал это, но он небрежный и немного излишний.Я уверен, что должен быть более короткий способ сделать это, чем почти дублировать мою строку 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;
} 
0 голосов
/ 07 апреля 2011

Посмотрите на эту ссылку: http://www.nsftools.com/misc/SearchAndHighlight.htm

Сценарий, используемый на этой странице, отличается от того, что вы берете, но конечный результат - именно то, что вы ищете.

...