我是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;

09-25 10:33