事件监听器中的Javascript回调

时间:2015-10-02 05:45:37

标签: javascript jquery callback event-handling jquery-callback

我目前正在尝试实现一个系统,其中从事件侦听器(下面的代码)中触发回调。当我运行代码时,我得到了错误"回调不是函数",我认为这是因为变量回调没有被事件监听器定义。

function playSound(no, callback) {
var noOfSounds = sound().length;
if(no == "random" || no == undefined) {
    act("There are "+noOfSounds+" Sounds");
    var randomNo = Math.floor(Math.random() * noOfSounds);
    act("Will use no."+randomNo);
    playSound(randomNo);
} else {
    sound()[no].addEventListener("ended", function() {

        callback();

    });
    sound()[no].play();
}}

1 个答案:

答案 0 :(得分:0)

我认为您的问题是您调用该函数的方式。如果我看第10行,你就是说

 playSound(randomNo)

应该是

 playSound(randomNo, function(){
    //code to execute in callback
});

这是因为您正在调用尝试使用回调函数,这是一个函数,应该在调用方法时添加到输入参数中。