【问题标题】:how to add 2 3 songs to website using html javascript如何使用 html javascript 将 2 3 首歌曲添加到网站
【发布时间】:2021-10-03 06:24:00
【问题描述】:

我还是新手 我在学习,

如果你能帮助我不明白,我想在网站上添加 2 3 首歌曲我写了代码但只有 1 首歌曲有效 如何让所有歌曲播放 但不是同时,而是依次,

例如 我正在听音乐 1,然后我想听播放 2,当我按下播放 2 时,播放 1 应该停止 怎么做我不明白你能提前帮忙吗谢谢 我留下代码

var mySong = document.getElementById("mySong");
var icon = document.getElementById("icon");

icon.onclick = function() {
  if(mySong.paused){
      mySong.play();
      icon.src = "img/pause-icon.png";
  }else{
    mySong.pause();
    icon.src = "img/play-icon.jpg";
  }
}
<img src="img/play-icon.jpg" alt="" id="icon" width="80">

          <audio id="mySong">
            <source src="Ганвест - Кайфули.mp3" type="audio/mp3">
          </audio>

          <img src="img/play-icon.jpg" alt="" id="icon" width="80">

          <audio id="mySong">
            <source src="Ганвест - Кайфули.mp3" type="audio/mp3">
          </audio>

【问题讨论】:

  • audio 元素的 ID 相同,因此当您按下播放键时,它会同时选择这两个元素。为了区分元素,ID 应该是唯一的。
  • 我知道,更改无效,现在正在播放 1 首音乐
  • 您是否像第一个一样选择了其他元素?例如- var mySong2 = document.getElementById("mySong2"); 并对其应用相同的逻辑?
  • 是的,我确实没有成功

标签: javascript html


【解决方案1】:

您需要唯一的 ID 或委托,然后您根本不需要 ID:

请注意,我将图标 id 更改为图标类,将每首歌曲包装在一个 div 中,并将所有歌曲也包装在一个 div 中

const icons = {
  play: "https://cdnjs.cloudflare.com/ajax/libs/blueimp-gallery/3.1.1/img/video-play.png",
  pause: "https://cdnjs.cloudflare.com/ajax/libs/blueimp-gallery/3.1.1/img/play-pause.png"
}
const isPlaying = audioElement => !audioElement.paused;

const container = document.getElementById("songs");
const songs = container.querySelectorAll(".song audio");
const controls = container.querySelectorAll(".song .icon");

container.addEventListener("click", function(e) {
  const tgt = e.target;
  if (tgt.matches(".icon")) {
    const mySong = tgt.closest(".song").querySelector("audio");
    // pause all other songs
    songs.forEach((song,i) => {
      if (isPlaying(song) && song != mySong) {
        song.pause()
        controls[i].src=icons.play;
      }
    }); 
    if (mySong.paused) {
      mySong.play();
      tgt.src = icons.pause;
    } else {
      mySong.pause();
      tgt.src = icons.play;
    }
  }
})
<div id="songs">
  <div class="song">
    <img src="https://cdnjs.cloudflare.com/ajax/libs/blueimp-gallery/3.1.1/img/video-play.png" alt="Toggle" class="icon" width="80">

    <audio id="mySong1">
      <source src="https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3" type="audio/mp3"></audio>
  </div>
  <div class="song">
    <img src="https://cdnjs.cloudflare.com/ajax/libs/blueimp-gallery/3.1.1/img/video-play.png" alt="Toggle" class="icon" width="80">

    <audio id="mySong2">
      <source src="https://www.soundhelix.com/examples/mp3/SoundHelix-Song-2.mp3" type="audio/mp3"></audio>
  </div>
</div>

【讨论】:

  • 我复制了代码现在它完全停止工作没有帮助按钮甚至没有按下
  • 好的,我也在找事情做,谢谢你的帮助
  • 一切正常,您更改了代码,一切正常,非常感谢您,但是当我按下播放 2 时,图像播放 1 暂停以及它如何改变您能帮忙
  • 是的,我做了,但图标不起作用,应该检查一下
  • 是的,是的,我想要它,你做到了,非常感谢你,一切都很好,尊重你,兄弟,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 2014-11-23
  • 2018-05-09
相关资源
最近更新 更多