169 похожих чатов

Добрый день Подскажите пож, в чем моя ошибка (знаю. В том,

что JS не учу)
есть модальное окно и несколько ссылок, которые его должны открывать.
Я присвоил им одинаковый класс и получаю их через querySelectorAll (querySelector тоже не работает)
В коллекции 2 элемента http://joxi.ru/YmEdbLdTGbG37r
Но работает только если я обращаюсь через ключ var btn = document.querySelectorAll(".openModal")[0]; и только одна ссылка понятное дело работает
приходиться писать так
var btn = document.querySelectorAll(".openModal")[0];
var btn2 = document.querySelectorAll(".openModal")[1];
и дальше так само btn2.close()...
У меня таких 5 ссылок. Как правильно это сделать ?

15 ответов

17 просмотров

код лучше показывать

Vyacheslav-Zavorotniy Автор вопроса
jabascripter
код лучше показывать

https://codepen.io/KitKat_zzz/pen/mdqdJRK

Vyacheslav Zavorotniy
https://codepen.io/KitKat_zzz/pen/mdqdJRK

Уважаемый, так вы содрали код банально со stackoverflow. Устаревший и кривой )))

Vyacheslav-Zavorotniy Автор вопроса
Alligator
Уважаемый, так вы содрали код банально со stackove...

раз такие пироги, то не оттуда https://www.w3schools.com/howto/howto_css_modals.asp

Циклом, не?

Vyacheslav Zavorotniy
раз такие пироги, то не оттуда https://www.w3schoo...

My proposal const btns = document.getElementsByClassName('btn'); const spans = document.getElementsByClassName('close'); const modals = document.getElementsByClassName('modal'); [...btns].forEach((btn, ind) => { btn.onclick = () => (modals[ind].style.display = 'block'); }); [...spans].forEach((span, ind) => { span.onclick = () => (modals[ind].style.display = 'none'); }); window.onclick = (e) => { [...modals].forEach((modal) => { if (e.target === modal) { modal.style.display = 'none'; } }); }; If your will not use ID but just classnames instead of <button id="myBtn">Open Modal</button> <div id="myModal" class="modal"> <span class="close">×</span> just use <button class="btn">Open Modal</button> <div class="modal"> <span class="close">x</span> You can store all opening buttons within HTML collection const btns = document.getElementsByClassName('btn'); Transfer HTML collection to an array [...btns] Add onclick event to each button within array .forEach((btn, ind) => { btn.onclick = () => (modals[ind].style.display = 'block'); }); You do the same thing for span (closing button)

Alligator
My proposal const btns = document.getElementsByCl...

Код слегка устаревший, но рабочий. Можно подправить. Но и так работать должен.

Vyacheslav Zavorotniy
https://codepen.io/KitKat_zzz/pen/mdqdJRK

var btns = document.querySelectorAll(".openModal"); btns.forEach(btn=>{ btn.onclick = function() { modal.style.display = "block"; } }) 2 изменения

Vyacheslav-Zavorotniy Автор вопроса
jabascripter
var btns = document.querySelectorAll(".openModal")...

Круто, работает. Спасибо большое

Vyacheslav-Zavorotniy Автор вопроса
Alligator
Код слегка устаревший, но рабочий. Можно подправит...

Спасибо. Добавлю вашу версию на будущее в заметки

jabascripter
почему там спреды? querySelector это решает

Потому и пишу, что устаревший. А править с телефона - дело неблагодарное ))

jabascripter
почему там спреды? querySelector это решает

Могу встречный вопрос. Почему там var? За такое в коде на собесе сразу попрощаются

Alligator
Могу встречный вопрос. Почему там var? За такое в ...

хотя все равно не понятно он давал код с NodeList`ом а вы переписали в коллекции

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта