Поиск данные на странице

242
13 сентября 2017, 14:56

Нужно сделать поиск на странице, на подобии как сделано в хроме Ctrl + G.

Нашел два варианта:

let TRange=null;
    function findString (str) {
        if (parseInt(navigator.appVersion)<4) return;
        let strFound;
        if (window.find) {
            // CODE FOR BROWSERS THAT SUPPORT window.find
            strFound=self.find(str);
            if (!strFound) {
                strFound=self.find(str,0,1);
                while (self.find(str,0,1)) continue;
            }
        } else if (navigator.appName.indexOf("Microsoft")!=-1) {
            // EXPLORER-SPECIFIC CODE
            if (TRange!=null) {
                TRange.collapse(false);
                strFound=TRange.findText(str);
                if (strFound) TRange.select();
            }
            if (TRange==null || strFound==0) {
                TRange=self.document.body.createTextRange();
                strFound=TRange.findText(str);
                if (strFound) TRange.select();
            }
        } else if (navigator.appName=="Opera") {
            alert ("Opera browsers not supported, sorry...")
            return;
        }
        if (!strFound) alert ("String '"+str+"' not found!")
        return;
    }

Второй.

let n = 0;
    function findInPage(str) {
        let txt, i, found;
        if (str == "") {
            return false;
        }
        // Find next occurance of the given string on the page, wrap around to the
        // start of the page if necessary.
        if (window.find) {
            // Look for match starting at the current point. If not found, rewind
            // back to the first match.
            if (!window.find(str)) {
                while (window.find(str, false, true)) {
                    n++;
                }
            } else {
                n++;
            }
            // If not found in either direction, give message.
            if (n == 0) {
                alert("Not found.");
            }
        } else if (window.document.body.createTextRange) {
            txt = window.document.body.createTextRange();
            // Find the nth match from the top of the page.
            found = true;
            i = 0;
            while (found === true && i <= n) {
                found = txt.findText(str);
                if (found) {
                    txt.moveStart("character", 1);
                    txt.moveEnd("textedit");
                }
                i += 1;
            }
            // If found, mark it and scroll it into view.
            if (found) {
                txt.moveStart("character", -1);
                txt.findText(str);
                txt.select();
                txt.scrollIntoView();
                n++;
            } else {
                // Otherwise, start over at the top of the page and find first match.
                if (n > 0) {
                    n = 0;
                    findInPage(str);
                }
                // Not found anywhere, give message. else
                alert("Not found.");
            }
        }
        return false;
    }

Второй более лучше, чем первый.

Но, как сделать что бы при клике на кнопку поиска все что найдено было выделено? Сейчас поиск происходит по нажатию на кнопку поиска, и если много раз кликать он переходит к следующему элементу.

READ ALSO
Как переходить на модальное окно закрыв родителя и вернуться обратно?

Как переходить на модальное окно закрыв родителя и вернуться обратно?

Нужно открыть модальное окно чтобы получить значение, знаю какНо нужно чтобы потом вернулось(после нажатия кнопки) то же родительское окно!

276
php для отдельного домена на сервере

php для отдельного домена на сервере

на сервере установлен php 56

228
Подключение файла с константами в CodeIgniter

Подключение файла с константами в CodeIgniter

Требуется подключить файлphp, где находятся константы, которые надо со временем изменить

264