Возвращает undefined и не может прочитать стиль

253
13 октября 2017, 18:16

Добрый День! Столкнулся с проблемой, JS никак не может понять стиль и выдает ошибку в console.log каждый раз. Кто знает, в чем может заключаться проблема?

  function closeDialog(fromMask) { 
        if (fromMask === undefined){ 
            fromMask = false; 
        } 
        console.log("TEST mask", fromMask); 
        if (canncellable === true) { 
            $("#mask").fadeOut(300); 
            $(popup_id).fadeOut(300); 
            document.getElementById(popup_id).style.display = "none" 
        } else if(fromMask === false){ 
            canncellable = true; 
            closeDialog(false); 
        } 
        resetIconToHidden() 
    } 
 
    function resetIconToHidden() { 
 
        let popupContainer = document.getElementById(popup_id); 
        popupContainer.getElementsByClassName("icon")[0].style.display = "none"; 
    }

Answer 1

document.getElementById(popup_id) возвращает undefined. Это значит, что нет в документе элемента у которого id совпадает со значением, которое хранится в переменной popup_id.

Для начала выведите в лог значение popup_id и убедитесь, что там находится то, что Вы ожидаете

Судя по строке

 $(popup_id).fadeOut(300);

в popup_id находится значение, начинающееся с символа #, который в jQuery обозначает, что в строке содержится id элемента, а для метода getElementById этот символ не нужен, и браузер считает, что Вы ищете элемент с id #xxx

А вообще, раз Вы уже нашли этот элемент при помощи jQuery, так и продолжайте работать с ним

 $(popup_id).fadeOut(300).css({display: none});

Но смысла ставить display: none нет никакого. Т.к. jQuery.fadeOut(..) сам это сделает по окончанию своей работы

READ ALSO
Работа с input , вставка символа и пробелы

Работа с input , вставка символа и пробелы

Как сделать так чтобы, если в числе больше двух нулей, то оно отделялось пробелами то есть: 100 < 2 , 1 000 > 2, 1 000 000 > 2 и тд

218
OWL carousel autoplay по загрузке блока

OWL carousel autoplay по загрузке блока

Добрый день, есть скрипт карусельки, не могу додуматься как можно запустить автоплей, при попадании блока карусели на экран, а не при загрузке...

282
отрицание в regex

отрицание в regex

этим патерном \bif\((+)\)\{([\s\S]+?)} я выбираю все блоки if http://joxi

189
Сравнения значений масивов

Сравнения значений масивов

У нас есть несколько div с класом iteam, дальше нам нужно взять ключ у всех елементов iteam , после из базы берем значения id, после нам нужно сравнить...

261