我不明白为什么我一直收到错误消息:未捕获类型错误:回调不是函数。我在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++;
});
}
答案 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