I
I
Ilya Famin2020-04-23 17:48:18
JavaScript
Ilya Famin, 2020-04-23 17:48:18

How to make it so that after finding a certain element from the search, the scroll moves to this element?

var input, search, pr, result, result_arr, locale_HTML, result_store;

                                    function func() {
                                        locale_HTML = document.body.innerHTML;   // сохраняем в переменную весь body (Первоначальный)
                                    }
                                    setTimeout(func, 1000);  //ждем подгрузки Jsona и выполняем

                                    function FindOnPage(name, status) {

                                        input = document.getElementById(name).value; //получаем значение из поля в html

                                        if (input.length < 3 && status == true) {
                                            alert('Для поиска вы должны ввести три или более символов');
                                            function FindOnPageBack() { document.body.innerHTML = locale_HTML; }
                                        }

                                        if (input.length >= 3) {
                                            function FindOnPageGo() {

                                                search = '/' + input + '/g';  //делаем из строки регуярное выражение
                                                pr = document.body.innerHTML;   // сохраняем в переменную весь body
                                                result = pr.match(/>(.*?)</g);  //отсекаем все теги и получаем только текст
                                                result_arr = [];   //в этом массиве будем хранить результат работы (подсветку)

                                                var warning = true;
                                                for (var i = 0; i < result.length; i++) {
                                                    if (result[i].match(eval(search)) != null) {
                                                        warning = false;
                                                    }
                                                }
                                                if (warning == true) {
                                                    alert('Не найдено ни одного совпадения');
                                                }

                                                for (var i = 0; i < result.length; i++) {
                                                    result_arr[i] = result[i].replace(eval(search), '<span style="background-color: green; position: absolute; margin-top: -100px">' + input + '</span>'); //находим нужные элементы, задаем стиль и сохраняем в новый массив
                                                }
                                                for (var i = 0; i < result.length; i++) {
                                                    pr = pr.replace(result[i], result_arr[i])  //заменяем в переменной с html текст на новый из новогом ассива
                                                }
                                                document.body.innerHTML = pr;  //заменяем html код
                                            }
                                        }
                                        function FindOnPageBack() { document.body.innerHTML = locale_HTML; }
                                        if (status) { FindOnPageBack(); FindOnPageGo(); } //чистим прошлое и Выделяем найденное
                                        if (!status) { FindOnPageBack(); } //Снимаем выделение
                                    }

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question