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 ответов

7 просмотров

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

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`ом а вы переписали в коллекции

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

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

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
18
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Карта сайта