не правильно работает поиск

244
28 мая 2017, 22:04

поиск перестает нормально работать(может только находит последний елемент) когда я добавляю команду overlay.style.height = "100vh";если без нее или вынести из цикла то все работает хорошо, почему height не срабатывает внутри цикла?

при таком коде работает поиск отлично

 $("#headerSearchInput").keyup(function() {
            var input, filter, container, elem, i, place, overlay;
            overlay = document.getElementById("headerSearchOverlay");
            input = this;
            filter = input.value.toUpperCase();
            container = document.getElementById("headerSearchResult");
            elem = container.getElementsByClassName("search-outcome-item");
            for (i = 0; i < elem.length; i++) {
                place = elem[i].getElementsByClassName("name")[0];
                if (place.innerHTML.toUpperCase().indexOf(filter) > -1 && filter.length > 0) {
                    elem[i].style.display = "block";
                } else {
                    elem[i].style.display = "none";
                }
            }
        });

нужный, но не рабочий вариант

$("#headerSearchInput").keyup(function() {
        var input, filter, container, elem, i, place, overlay;
        overlay = document.getElementById("headerSearchOverlay");
        input = this;
        filter = input.value.toUpperCase();
        container = document.getElementById("headerSearchResult");
        elem = container.getElementsByClassName("search-outcome-item");
        for (i = 0; i < elem.length; i++) {
            place = elem[i].getElementsByClassName("name")[0];
            if (place.innerHTML.toUpperCase().indexOf(filter) > -1 && filter.length > 0) {
                elem[i].style.display = "block";
                overlay.style.height = "100vh";
            } else {
                elem[i].style.display = "none";
                overlay.style.height = 0;
            }
        }
    });
Answer 1

overlay.style.height хранит в себе целочисленное значение в пикселях, то есть overlay.style.height = 100 - сработает, но высота будет в пикселях. Вместо значений вьюпорта (100vh) можно использовать значение screen.height либо window.InnerHeight

The height property returns the total height of the user's screen, in pixels. - Screen height Property

The innerHeight property returns the inner height of a window's content area - Window innerWidth and innerHeight Properties

READ ALSO
Каждый элемент массива в нижний регистр

Каждый элемент массива в нижний регистр

Отдельный элемент переводит, в цикле не идетГде ошибка?

328
Как сложить данные в массиве (цикл)

Как сложить данные в массиве (цикл)

Результат отдает вот такой: 30 30 30 А нужен 90(Сложить все значения в bets

285
Использование библиотеки jquery-lang-js в js файле

Использование библиотеки jquery-lang-js в js файле

Пользуюсь библиотекой jquery-lang-js (https://githubcom/Irrelon/jquery-lang-js) для смены языка на сайте

301