Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обработка двух ID (https://javascript.ru/forum/misc/82311-obrabotka-dvukh-id.html)

Ubivectel 18.04.2021 08:11

Обработка двух ID
 
Привет Мир!

Имеются два объекта, которые нужно скрывать при клике на третий, обращаюсь к ним по ID по классу не прокатывает. Конструкция получилась вот такая:

document.getElementById('KIDE_usuario').style.display = "none"; 
document.getElementById('KIDE_mensaje').style.display = "none";


Собственно все нормально и все работает, но во мне бунтует перфекционист, прописывать два раза одно и то же как-то дико, можно ли как-то упростить конструкцию? А если элементов не два, а пять например?

Ubivectel 18.04.2021 08:23

Кстати оба элемента имеют класс: "KIDE_mostrar", но такой код, не срабатывает

document.querySelector('.KIDE_mostrar').style.display = "none";


Почему так?

рони 18.04.2021 08:50

Цитата:

Сообщение от Ubivectel
Почему так?

потому что нужен цикл по необходимым элементам
document.querySelectorAll('.KIDE_mostrar').forEach(elem => elem.style.display = "none");

Ubivectel 18.04.2021 09:14

Мое почтение профессор! :victory:
Так вот куда используются циклы ))) Пошел оптимизировать, а то уже куча таких нагромождений нелепых )

Ubivectel 18.04.2021 13:42

Что бы не создавать новую тему, рони, вот твое произведение (хотя вряд ли помнишь):

nodo.innerHTML =
            s_hora +
            tmp +
            '<span style="cursor: pointer" class="KIDE_' +
            this.rangos[rango] +
            '" onclick="kide.insertSmile(\'' +
            name +
            ", ')\" oncontextmenu=\"event.preventDefault();kide.mensaje('" +
            name +
            "', " +
            uid +
            ", " +
            id +
            ", '" +
            url +
            "', '" +
            ti +
            "', '" +
            sesion +
            "', " +
            rango +
            ", '" +
            img +
            "')\">" +
            name +
            "</span>: <span " +
            c +
            ">" +
            this.filter_smilies(text) +
            "</span>";


Можно ли к "oncontextmenu" добавить еще одно событие, нужно что бы к элементу с классом "overlayo" добавлялся стиль display: block;

рони 18.04.2021 14:44

Ubivectel,
nodo.innerHTML =
            s_hora +
            tmp +
            '<span style="cursor: pointer" class="KIDE_' +
            this.rangos[rango] +
            '" onclick="kide.insertSmile(\'' +
            name +
            ", ')\" oncontextmenu=\"event.preventDefault();document.querySelector(\'.overlayo\').style.display = \'block\';kide.mensaje('" +
            name +
            "', " +
            uid +
            ", " +
            id +
            ", '" +
            url +
            "', '" +
            ti +
            "', '" +
            sesion +
            "', " +
            rango +
            ", '" +
            img +
            "')\">" +
            name +
            "</span>: <span " +
            c +
            ">" +
            this.filter_smilies(text) +
            "</span>";

Ubivectel 18.04.2021 15:03

Почти правильно делал, но как обычно заплутал в синтаксисе, спасибо рони, все ок! :dance:


Часовой пояс GMT +3, время: 14:09.