【问题标题】:How to play songs continuously in HTML & JavaScript如何在HTML和JavaScript中持续播放歌曲
【发布时间】:2021-03-16 05:18:30
【问题描述】:

我的 JavaScript 代码有问题,我使用按钮来播放歌曲、暂停、停止、下一首歌曲、上一首歌曲,所有按钮都可以使用。但问题是歌曲不会自动播放下一首歌曲。我单击下一步按钮,然后它会播放,否则不会自动播放下一首歌曲。帮帮我……!

Index.html

<div id="container">
      <div id="audio_image">
          <img class="cover">
      </div>
      <div id="audio_player">
          <div id="audio_info">
              <span class="artist"></span> - <span class="title"></span>
          </div>
          <div id="tracker">
            <div id="progress-bar">
                <span id="progress"></span>
            </div>
            <span id="duration">0:00</span>
        </div>
          <div id="button">
              <span>
                  <button id="prev"></button>
                  <button id="play"></button>
                  <button id="pause"></button>
                  <button id="stop"></button>
                  <button id="next"></button>
              </span>
          </div>
          <div class="clearfix"></div>
          <div class="wrapper">
            <input id="volume" type="range" min="0" max="100" step="1"/>
            <label class="visually-hidden" for="volume">Volume</label>
          </div>
          <div class="clearfix"></div>
          <ul id="playlist" class="hidden">
              <li song="RAAKKALAM.mp3" cover="cover1.jpg" artist="Christmas Songs">RAAKKALAM</li>
              <li song="AARPARIPPOM.mp3" cover="cover1.jpg" artist="Christmas Songs">AARPARIPPOM</li>
              <li song="ADI KALAI.mp3" cover="cover1.jpg" artist="Christmas Songs">ADI KALAI</li>
              <li song="IMMANUEL.mp3" cover="cover1.jpg" artist="Christmas Songs">IMMANUEL</li>
              <li song="AARIRO.mp3" cover="cover1.jpg" artist="Christmas Songs">AARIRO</li>
              <li song="IYAYA NAAN.mp3" cover="cover1.jpg" artist="Christmas Songs">IYAYA NAAN</li>
              <li song="JENITHAR.mp3" cover="cover1.jpg" artist="Christmas Songs">JENITHAR</li>
              <li song="KANDEN.mp3" cover="cover1.jpg" artist="Christmas Songs">KANDEN</li>
              <li song="KARIRUL.mp3" cover="cover1.jpg" artist="Christmas Songs">KARIRUL</li>
              <li song="KARTHAVE.mp3" cover="cover1.jpg" artist="Christmas Songs">KARTHAVE</li>
              </ul>
      </div>
  </div>

Main.js

var audio;

$('#pause').hide();

initAudio($('#playlist li:first-child'));

function initAudio(element){
  var song = element.attr('song');
  var title = element.text();
  var cover = element.attr('cover');
  var artist = element.attr('artist');

  audio = new Audio('music/Christmas/Keerthanaigal/'+song);

  $('.artist').text(artist);
  $('.title').text(title);

  $('img.cover').attr('src','images/covers/'+cover);

  $('#playlist li').removeClass('active');
  element.addClass('active');
}

$('#play').click(function(){
  audio.play();
  $('#play').hide();
  $('#pause').show();
  showDuration();
});

$('#pause').click(function(){
  audio.pause();
  $('#play').show();
  $('#pause').hide();
});

$('#stop').click(function(){
  audio.pause();
  audio.currentTime=0;
  $('#play').show();
  $('#pause').hide();
});

$('#next').click(function(){
  audio.pause();
  var next=$('#playlist li.active').next();
  if(next.length==0){
    next=$('#playlist li:first-child');
  }
  initAudio(next);
  audio.play();
  $('#play').hide();
  $('#pause').show();
  showDuration();
});

$('#prev').click(function(){
  audio.pause();
  var prev=$('#playlist li.active').prev();
  if(prev.length==0){
    prev=$('#playlist li:last-child');
  }
  initAudio(prev);
  audio.play();
  $('#play').hide();
  $('#pause').show();
  showDuration();
});

$('#playlist li').click(function(){
  audio.pause();
  initAudio($(this));
  audio.play();
  showDuration();
});

$('#volume').change(function(){
  audio.volume=parseFloat(this.value/100);
});

function showDuration(){
  $(audio).bind('timeupdate',function(){
    var s=parseInt(audio.currentTime%60);
    var m=parseInt(audio.currentTime/60)%60;
    if(s<10){
      s='0'+s;
    }
    $('#duration').html(m+':'+s);
    var value=0;
    if(audio.currentTime>0){
      value=Math.floor((100/audio.duration)*audio.currentTime);
    }
    $('#progress').css('width',value+'%');
  });
}
*{
  margin: 1%;
  padding: 0%;
  border: none;
  outline: none;
}
body{
  font-family: cursive;
  font-size: 13px;
  line-height: 1.5em;
  color: ghostwhite;
  background: #336699;
  }
h1{
  text-align: center;
  text-shadow: #336699;
}
.clearfix{
  clear: both;
}
#container{
  width: 330px;
  min-height: 400px;
  background: #336699;
    overflow: auto;
  margin: 20px auto;
  border-radius: 10px;
  box-shadow: 0 10px 8px -8px #339999;
}
#audio_image{
  position: relative;
  overflow: hidden;
  width: 330px;
  height: 200px;
  margin: 0px auto;
  border-radius: 10px;
}
#audio_image.cover{
  width: 100%;
}
#audio_info{
  text-align: center;
}
#audio_info.artist{
  font-size: 15px;
  font-weight: bold;
}
.wrapper {
  position: relative;
  margin: 1rem;
}
#buttons{
  width: 90%;
  display: block;
  margin: 15px auto;
  margin-left: 23px;
  overflow: auto;
}
button#play{
  width: 70px;
  height: 70px;
  background:url(../images/play.png) no-repeat;
  float: left;
  margin-left: 0px;
}
button#pause{
  width: 70px;
  height: 70px;
  background:url(../images/pause.png) no-repeat;
  float: left;
  margin-left: 0px;
}
button#stop{
  width: 70px;
  height: 70px;
  background:url(../images/stop.png) no-repeat;
  float: left;
  margin-left: 3px;
}
button#prev{
  width: 70px;
  height: 70px;
  background:url(../images/prev.png) no-repeat;
  float: left;
  margin-top: 15px;
}
button#next{
  width: 70px;
  height: 70px;
  background:url(../images/next.png) no-repeat;
  float: right;
  margin-top: 15px;
}
#tracker{
  position: relative;
  width: 100%;
}
#progress-bar{
  width: 75%;
  margin-left: 2%;
  margin-bottom: 20px;
  margin-top: 9px;
  height: 12px;
  background: aqua no-repeat;
  border-radius: 5px;
  float: left;
}
#progress{
  background: white no-repeat;
  border-radius: 5px;  
  height: 10px;
  display: inline-block;
}
#duration{
  position: absolute;
  top: 0;
  right: 10px;
  padding: 4px 8px;
  background: black;
  border-radius: 5px;
}
#playlist{
  list-style: none;
}
#playlist li{
  cursor: pointer;
  margin: 5px;
}
#playlist li.active{
  font-weight: bold;
  padding: 3px;
  background: slategrey;
}
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"&gt;&lt;/script&gt;

【问题讨论】:

  • 页面加载时歌曲是否播放?
  • 元素开始和停止播放时会发出事件。您可以挂钩停止事件以播放下一个项目。

标签: javascript html jquery css html5-audio


【解决方案1】:

aud.onended = function() {
        stop();
        nextsong();
        aud.play();
        };

这就是我在music-player 网站上所做的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2016-05-12
    • 2019-05-15
    • 2014-04-04
    相关资源
    最近更新 更多