#javascript #html
Вопрос:
поэтому я пытался создать программу для воспроизведения музыки, и я пытался заставить ее запускать каждую песню независимо(точно так же, как это делают все музыкальные проигрыватели), но мой сценарий, похоже, работает только тогда, когда у меня в html только одна песня, поэтому, когда я добавил 12 песен и заказал их с атрибутом данных, а затем попытался нажать кнопку, ничего не произошло, а затем я попытался использовать консоль.войдите в систему, чтобы проверить, что произошло, и, по-видимому, все 12 песен сработали сразу, вот мой javascript
const songs = document.querySelectorAll("[data-songs]"); const icons = document.querySelector("#icon"); songs.forEach((song) =gt; { icon.addEventListener("click", function () { console.log(song); //put code of icon here if (mySong.paused) { mySong.play(); icon.src = "/images/pause.png"; } else { mySong.pause(); icon.src = "/images/play.png"; } }); });
и вот мой html
lt;!DOCTYPE htmlgt; lt;html lang="en"gt; lt;headgt; lt;meta charset="UTF-8" /gt; lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /gt; lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /gt; lt;link rel="stylesheet" href="/css/styles.css" /gt; lt;link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" /gt; lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" /gt; lt;titlegt;Music Applt;/titlegt; lt;/headgt; lt;bodygt; lt;div class="music-container"gt; lt;div class="music-header"gt; lt;i class="fa fa-angle-left"gt;lt;/igt; lt;div class="title"gt; lt;pgt;My Musiclt;/pgt; lt;/divgt; lt;i class="fa fa-search"gt; lt;/igt; lt;/divgt; lt;div class="music-playlist"gt; lt;div class="music-menu text-center"gt; lt;div class="menu"gt; lt;ulgt; lt;ligt;lt;a href="#"gt;Songslt;/agt;lt;/ligt; lt;ligt;lt;a href="#"gt;Albumslt;/agt;lt;/ligt; lt;ligt;lt;a href="#"gt;Artistlt;/agt;lt;/ligt; lt;ligt;lt;a href="#"gt;Genereslt;/agt;lt;/ligt; lt;/ulgt; lt;/divgt; lt;/divgt; lt;div class="music-box"gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="1"gt; lt;source src="/music/a.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" id="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="2"gt; lt;source src="/music/b.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" id="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="3"gt; lt;source src="/music/c.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" id="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="4"gt; lt;source src="/music/d.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" id="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;burzumlt;/h6gt; lt;audio id="mySong" data-songs="5"gt; lt;source src="/music/e.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" id="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="6"gt; lt;source src="/music/f.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" id="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="7"gt; lt;source src="/music/g.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" id="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="8"gt; lt;source src="/music/h.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" id="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="9"gt; lt;source src="/music/i.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" id="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="10"gt; lt;source src="/music/j.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" id="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="11"gt; lt;source src="/music/k.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" id="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="12"gt; lt;source src="/music/m.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" id="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;/divgt; lt;/divgt; lt;div class="music-play"gt; lt;div class="play-image"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="play-controls"gt; lt;div class="controls"gt; lt;div class="song-name"gt; lt;h5gt;Dunkelheitlt;/h5gt; lt;pgt;Burzumlt;/pgt; lt;/divgt; lt;div class="play-icon"gt; lt;i class="fa fa-step-backward"gt; lt;/igt; lt;i class="fa fa-play"gt; lt;/igt; lt;i class="fa fa-step-forward"gt; lt;/igt; lt;/divgt; lt;/divgt; lt;div class="music-progress"gt; lt;div class="progress"gt; lt;div class="progress-bar"gt;lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt; lt;script src="/Script/jquery-3.6.0.min.js"gt;lt;/scriptgt; lt;script src="/Script/script.js"gt;lt;/scriptgt; lt;/bodygt; lt;/htmlgt; ```
Комментарии:
1. Идентификатор должен быть уникальным. Вы не можете использовать lt;аудио идентификатор=»mySong» данные-песни=»12″gt;lt;аудио идентификатор=»mySong» данные-песни=»12″gt; 12 раз. Определите его как класс.
2.
id
Атрибуты HTML должны быть уникальными.
Ответ №1:
У вас не может быть дубликатов идентификаторов, все идентификаторы должны быть уникальными. Вот для чего нужны занятия. Используйте класс для каждой кнопки, а затем используйте этот класс, чтобы выбрать правильную кнопку (изображение) для добавления прослушивателя событий.
const songs = document.querySelectorAll("[data-songs]"); const icons = document.querySelectorAll(".icon"); songs.forEach((song) =gt; { // Get the correct icon button... var icon = song.parentElement.parentElement.querySelector(".icon"); icon.addEventListener("click", function() { console.log(song); //put code of icon here if (mySong.paused) { mySong.play(); icon.src = "/images/pause.png"; } else { mySong.pause(); icon.src = "/images/play.png"; } }); });
lt;link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" /gt; lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" /gt; lt;div class="music-container"gt; lt;div class="music-header"gt; lt;i class="fa fa-angle-left"gt;lt;/igt; lt;div class="title"gt; lt;pgt;My Musiclt;/pgt; lt;/divgt; lt;i class="fa fa-search"gt; lt;/igt; lt;/divgt; lt;div class="music-playlist"gt; lt;div class="music-menu text-center"gt; lt;div class="menu"gt; lt;ulgt; lt;ligt;lt;a href="#"gt;Songslt;/agt;lt;/ligt; lt;ligt;lt;a href="#"gt;Albumslt;/agt;lt;/ligt; lt;ligt;lt;a href="#"gt;Artistlt;/agt;lt;/ligt; lt;ligt;lt;a href="#"gt;Genereslt;/agt;lt;/ligt; lt;/ulgt; lt;/divgt; lt;/divgt; lt;div class="music-box"gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="1"gt; lt;source src="/music/a.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" class="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="2"gt; lt;source src="/music/b.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" class="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="3"gt; lt;source src="/music/c.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" class="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="4"gt; lt;source src="/music/d.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" class="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;burzumlt;/h6gt; lt;audio id="mySong" data-songs="5"gt; lt;source src="/music/e.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" class="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="6"gt; lt;source src="/music/f.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" class="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="7"gt; lt;source src="/music/g.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" class="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="8"gt; lt;source src="/music/h.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" class="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="9"gt; lt;source src="/music/i.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" class="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="10"gt; lt;source src="/music/j.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" class="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="11"gt; lt;source src="/music/k.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" class="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;hr /gt; lt;div class="music-info"gt; lt;div class="music-img"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="music-name"gt; lt;h6gt;Single Song Titlelt;/h6gt; lt;audio id="mySong" data-songs="12"gt; lt;source src="/music/m.mp3" type="audio/mp3" /gt; lt;/audiogt; lt;pgt;Single name and music directorlt;/pgt; lt;/divgt; lt;img src="/images/play.png" class="icon" style="padding-right: 20px" /gt; lt;/divgt; lt;/divgt; lt;/divgt; lt;div class="music-play"gt; lt;div class="play-image"gt; lt;img src="images/Filosofem.jpg" alt="" /gt; lt;/divgt; lt;div class="play-controls"gt; lt;div class="controls"gt; lt;div class="song-name"gt; lt;h5gt;Dunkelheitlt;/h5gt; lt;pgt;Burzumlt;/pgt; lt;/divgt; lt;div class="play-icon"gt; lt;i class="fa fa-step-backward"gt; lt;/igt; lt;i class="fa fa-play"gt; lt;/igt; lt;i class="fa fa-step-forward"gt; lt;/igt; lt;/divgt; lt;/divgt; lt;div class="music-progress"gt; lt;div class="progress"gt; lt;div class="progress-bar"gt;lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt;
Комментарии:
1. теперь все кнопки работают, но все они продолжают воспроизводить только одну песню
2. @aliyass — Это потому, что вы все еще используете один и тот же идентификатор для всех аудиоэлементов. Вы не включили весь свой код, поэтому я не обращался к этому вопросу. Поскольку это устранило проблему с вашими кнопками, пожалуйста, нажмите на галочку, чтобы принять ответ. Если вам нужна дополнительная помощь с аудиоэлементами, пожалуйста, задайте новый вопрос и укажите весь соответствующий код.