我是javascript新手,所以这是一个基本问题。我创建了一个简单的mp3播放器,该播放器会加载第一首歌曲,然后以阵列形式播放第二对夫妇的歌曲。我修改了我在堆栈上找到的这段代码,它可以正常工作:
audioPlayer.onended = function() {
if(currentSong < nextSong.length-1) {
audioPlayer.src = nextSong[++currentSong];
document.getElementById('songTitle').innerHTML
= songTitle[currentSong];
}
}
但是,如果我尝试将实现放入其自己的函数中,并以这种方式调用该函数不起作用:
audioPlayer.onended = nextSong();
function nextSong() {
if(currentSong < nextSong.length-1) {
audioPlayer.src = nextSong[++currentSong];
document.getElementById('songTitle').innerHTML
= songTitle[currentSong];
}
}
我不想每次使用nextNong()函数时都重写代码。我尝试从标记内的按钮(例如this post)调用nextSong()函数,但无法调用该函数。谢谢你的帮助。
最佳答案
这是一个普遍的困惑。第二个示例的实际操作是运行nextSong
函数并将其返回值分配给onended
。
相反,您可以将代码更改为:
function nextSong() {
if(currentSong < nextSong.length-1) {
audioPlayer.src = nextSong[++currentSong];
document.getElementById('songTitle').innerHTML
= songTitle[currentSong];
}
}
// Assign the function (nextSong) not its return value (nextSong())
audioPlayer.onended = nextSong;