当我的函数有回调函数时,获取回调函数不是函数

时间:2015-05-08 23:54:04

标签: javascript node.js

我不明白为什么我一直收到错误消息:未捕获类型错误:回调不是函数。我在giveTrack函数中显然有一个回调函数。有什么见解吗?

function giveTrack(track, elementid) {
    SC.oEmbed(track, {
        auto_play: false,
        maxheight: 125,
        maxwidth: 300
    }, document.getElementById(elementid), function(oEmbed) {
        console.log(oEmbed.html);
    });

}


var looper = 0;
for (x in djlist) {
    SC.get('/users/' + djlist[x] + '/tracks', function(tracks) {
        console.log(tracks[0]);
        myTrack = tracks[0].permalink_url;
        var g = document.createElement('div');
        g.id = "hello" + looper;
        document.createElement('br');
        giveTrack(myTrack, "hello" + looper);

        looper++;
    });
}

1 个答案:

答案 0 :(得分:1)

SC.oEmbed方法采用元素:

SC.oEmbed(url, options, element);

或回调:

SC.oEmbed(url, options, callback);

您正在尝试同时使用元素和回调。该方法将忽略第四个参数,并尝试确定第三个参数的类型。

您已创建了具有特定ID的元素,但您尚未将该元素添加到页面中。当您使用getElementById查找元素时,您将获得null

因为第三个参数是null,所以该方法无法确定它是应该是元素还是回调,所以显然它假设是回调。由于引用为null,因此无法将其用作函数。

参考:https://developers.soundcloud.com/docs/api/sdks#embedding