Member 14000330 Ответов: 2

Uncaught typeerror: не удается прочитать свойство querySelector null


Когда я запускаю этот код в браузере, я получаю ошибку.

Uncaught TypeError: Cannot read property 'querySelector' of null
    at script.js:136
    at script.js:188
(anonymous) @ script.js:136
(anonymous) @ script.js:188

Я не знаю, как это сделать. Не могли бы вы мне помочь?

/* Search header start */
(function() {
    var isAnimating;
    var morphSearch = document.getElementById('morphsearch'),
    line 136--> input = morphSearch.querySelector('input.morphsearch-input'),
    ctrlClose = morphSearch.querySelector('span.morphsearch-close'),
    isOpen = isAnimating = false,
    isHideAnimate = morphsearch.querySelector('.morphsearch-form'),
        // show/hide search area
        toggleSearch = function(evt) {
            // return if open and the input gets focused
            if (evt.type.toLowerCase() === 'focus' && isOpen) return false;

            var offsets = morphsearch.getBoundingClientRect();
            if (isOpen) {
                classie.remove(morphSearch, 'open');

                // trick to hide input text once the search overlay closes
                // todo: hardcoded times, should be done after transition ends
                //if( input.value !== '' ) {
                    setTimeout(function() {
                        classie.add(morphSearch, 'hideInput');
                        setTimeout(function() {
                            classie.add(isHideAnimate, 'p-absolute');
                            classie.remove(morphSearch, 'hideInput');
                            input.value = '';
                        }, 300);
                    }, 500);
                //}

                input.blur();
            } else {
                classie.remove(isHideAnimate, 'p-absolute');
                classie.add(morphSearch, 'open');
            }
            isOpen = !isOpen;
        };

    // events
    input.addEventListener('focus', toggleSearch);
    ctrlClose.addEventListener('click', toggleSearch);
    // esc key closes search overlay
    // keyboard navigation events
    document.addEventListener('keydown', function(ev) {
        var keyCode = ev.keyCode || ev.which;
        if (keyCode === 27 && isOpen) {
            toggleSearch(ev);
        }
    });
    var morphSearch_search = document.getElementsByClassName('morphsearch-search');
    $(".morphsearch-search").on('click', toggleSearch);

    /***** for demo purposes only: don't allow to submit the form *****/
    morphSearch.querySelector('button[type="submit"]').addEventListener('click', function(ev) {
        ev.preventDefault();
    });
line 188 --> })();
/* Search header end */


Что я уже пробовал:

Я попытался удалить код...но получил ту же ошибку.

2 Ответов

Рейтинг:
2

Bohdan Stupak

По - видимому, у вас нет никакого элемента с идентификатором morphsearch на вашей странице.


Рейтинг:
0

Richard MacCutchan

Чтобы быть ясным, следующая строка (135) не возвращает значение:

var morphSearch = document.getElementById('morphsearch'),

Вам действительно нужно прочитать о нулевых ссылках и о том, как их проверять и исправлять.