Javascript html5音频歌曲仅播放阵列中的前2首?

Javascript html5音频歌曲仅播放阵列中的前2首?,javascript,html,audio,Javascript,Html,Audio,只有我的前两首歌在播放,然后什么也没发生。 我不确定为什么它工作两次,然后停止?我想让它在一系列歌曲中永远播放。 我不能让我的倒带也工作,我希望它,所以当你点击倒带按钮时,歌曲会转到-,在数组上,如果它小于0,它会转到array.length歌曲 全球: var btnPlay = new Button(561,743,33,92); var btnRewind = new Button(0,0,800,300); //entire canvas just to test var song1

只有我的前两首歌在播放,然后什么也没发生。 我不确定为什么它工作两次,然后停止?我想让它在一系列歌曲中永远播放。 我不能让我的倒带也工作,我希望它,所以当你点击倒带按钮时,歌曲会转到-,在数组上,如果它小于0,它会转到array.length歌曲

全球:

var btnPlay = new Button(561,743,33,92);
var btnRewind = new Button(0,0,800,300); //entire canvas just to test

var song1 = new Audio("songs/loop1.mp3");
var song2 = new Audio("songs/loop2.mp3");
var song3 = new Audio("songs/loop3.mp3");
var song4 = new Audio("songs/loop4.mp3");
var song5 = new Audio("songs/loop5.mp3");
var song6 = new Audio("songs/loop6.mp3");
var song7 = new Audio("songs/loop7.mp3");
var song8 = new Audio("songs/loop8.mp3");
var song9 = new Audio("songs/loop9.mp3");
var song10 = new Audio("songs/loop10.mp3");
var song11 = new Audio("songs/loop11.mp3");
var rewindClicked = false;
var songList = [];
var currentSong = 1;

songList.push(song1,song2,song3,song4,song5,song6,song7,song8,song9,song10,song11);

var song = songList[0];
单击“回放”按钮的方法:

function mouseClickedButtons(e)
{
alert("hi"); //works
   if(btnRewind.checkClicked())
   {
   alert("hey"); //does not
   rewindClicked = true;
     NextSong();

   }

}
换歌方法:

function NextSong()
{
document.removeEventListener('ended',NextSong);

if(rewindClicked ==true)
{
currentSong--;
}
else
{
currentSong++;
}

if(currentSong > songList.length);
{
currentSong = 1;
}

if(currentSong < 0)
{
currentSong = songList.length; 
}

songList[currentSong].play();
rewindClicked = false;




songList[currentSong].addEventListener('ended', NextSong);
}
Button对象(我在play Button中使用了它,因此它可以工作)

功能按钮(xL、xR、yT、yB)
{
这个.xLeft=xL;
this.xRight=xR;
这个.yTop=yT;
this.yBottom=yB;
}
Button.prototype.checkClicked=函数()
{

如果(this.xLeft播放HTML5音频的基本代码也带有控件:

var i=0;//歌曲索引
var歌曲列表=[
‘songs/loop1.mp3’、‘songs/loop2.mp3’、‘songs/loop3.mp3’、‘songs/loop4.mp3’,
“songs/loop5.mp3”、“songs/loop6.mp3”、“songs/loop7.mp3”、“songs/loop8.mp3”
];
//创建音频元素
var ae=document.createElement('audio');
ae.id=‘音频播放器’;
ae.src=歌曲列表[0];
文件.正文.附件(ae);
//创建控件
var btnPlay=document.createElement('button');
var btnPrev=document.createElement('button');
var btnNext=document.createElement('button');
var testDiv=document.createElement('div');
btnPlay.innerHTML='Play/Pause';
btnPrev.innerHTML='上一首歌';
btnNext.innerHTML=‘下一首歌’;
testDiv.id=“test”;
document.body.appendChild(btnPlay);
文件.正文.附件(btnPrev);
document.body.appendChild(btnNext);
document.body.appendChild(testDiv);
//添加事件处理程序
ae.onplay=函数(){
testDiv.innerHTML='正在播放#'+(i+1)+''+歌曲列表[i];
};
ae.onended=函数(){
NextSong();
};
btnPlay.onclick=函数(){
如果(ae.暂停)ae.播放();
否则,暂停();
};
btnPrev.onclick=PrevSong;
btnNext.onclick=NextSong;
玩();
函数PrevSong(){
i=(i>0)?i-1:songList.length-1;//选择上一个索引
ae.setAttribute(“src”,歌曲列表[i]);
玩();
}
函数NextSong(){
i=(i
工作小提琴:

IE8和更早版本的Firefox不支持HTML5音频标签和mp3播放,因此为了向后兼容,您应该使用一些


工作脚本示例如下:

哪里定义了
checkClicked
?对该函数的调用似乎无法正常运行


您没有向我们显示单击按钮的绑定,但无论如何,我会分别绑定每个按钮,这样您就不需要检查单击了哪个按钮。

您应该让代码更可读-行与行之间的空格更少,缩进正确。这是无法理解的。您找到解决方案了吗?
song.addEventListener('ended', NextSong);
function Button(xL,xR,yT,yB)
{
this.xLeft = xL;
this.xRight = xR;
this.yTop = yT;
this.yBottom = yB;
}



Button.prototype.checkClicked = function()
{

  if(this.xLeft <= mouseX && mouseX <= this.xRight && this.yTop <= mouseY && mouseY <= this.yBottom)
  {

     return true;
  }

}