Невозможно получить элемент с отображением: к нему не применено ни одно свойство с помощью getElementById()

Я столкнулся с проблемой, когда функция getElementById() не может получить определенный элемент на странице, к которому применено свойство display: none, даже если он виден в DOM (я вижу, что div и его идентификатор существуют в окончательная визуализированная страница).

Есть ли способ обойти это?

Вот код:

    togglePanel() {
        const panelId = this.accordionItem.querySelector("#collapsible-panel");

        this.shouldShowAccordion = !this.shouldShowAccordion;

        if (this.shouldShowAccordion) {
            panelId.classList.remove("collapsed");
        }
        else {
            panelId.classList.add("collapsed");
        }  
    }

складная панель — это идентификатор div, к которому применено display: none.


person Dan    schedule 25.07.2020    source источник
comment
Пожалуйста, добавьте минимальный воспроизводимый пример (особенно потому, что в вашем вопросе нет .getElementById() звонка)   -  person Andreas    schedule 25.07.2020
comment
Пожалуйста, добавьте демонстрацию на jsfiddle или где-нибудь еще, чтобы она имела больше смысла.   -  person Pritesh    schedule 25.07.2020
comment
Виноват. На самом деле я использую querySelector() в узле HTMLElement, который содержит div со свойством display: none.   -  person Dan    schedule 25.07.2020
comment
Затем исправьте свой вопрос.   -  person Andreas    schedule 25.07.2020


Ответы (1)


person    schedule
comment
Почему селектор атрибутов, а не простой селектор идентификаторов? И как это решает проблему ОП? - person Andreas; 25.07.2020
comment
@Andreas, даже если вы измените его на document.getElementById(collapsiblepanel) или document.querySelector(#collapsiblepanel), это сработает. - person Asutosh; 25.07.2020
comment
Давайте перефразируем мой комментарий: насколько ваш ответ актуален для проблемы OP? - person Andreas; 25.07.2020
comment
Это пример, который я дал, чтобы выбрать элемент в JS, даже если он не отображается. - person Asutosh; 25.07.2020
comment
Ни один из методов .getElement* или .querySelector* не заботится о видимости элемента. Пока он находится в DOM и соответствует идентификатору, классу, имени тега, селектору... он будет найден этими методами. - person Andreas; 25.07.2020