Javascript没有使用=运算符执行函数

lef*_*ion 0 javascript html5 dom

我是javascript的新手,所以这是一个基本问题.我创建了一个简单的mp3播放器,可以加载第一首歌曲,然后在阵列中播放下一首歌曲.我修改了我在堆栈上找到的代码,它可以工作:

audioPlayer.onended = function() {
    if(currentSong < nextSong.length-1) {
        audioPlayer.src = nextSong[++currentSong];
        document.getElementById('songTitle').innerHTML 
                                = songTitle[currentSong];
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试将实现放在它自己的函数中并以这种方式调用函数它不起作用:

audioPlayer.onended = nextSong();

function nextSong() {
    if(currentSong < nextSong.length-1) {
        audioPlayer.src = nextSong[++currentSong];
        document.getElementById('songTitle').innerHTML 
                                = songTitle[currentSong];
    }
}
Run Code Online (Sandbox Code Playgroud)

每次我想使用函数nextSong()时,我都不想重写代码.我试过从标签内的一个按钮调用nextSong()函数,例如这篇文章,但是无法调用函数.谢谢你的帮助.

bva*_*ghn 5

这是一个常见的混乱.你的第二个例子实际上是运行该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;
Run Code Online (Sandbox Code Playgroud)