2015-05-08 37 views
-1

我不明白爲什麼我不斷收到錯誤消息:未捕獲類型錯誤:回調不是函數。我在我的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

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

+0

怎樣的元素添加到頁面之前,我打電話SC.oEmbed – user2510809

+0

@ user2510809:你會使用'appendChild'方法(或類似),將其添加到一個元素在頁面。 – Guffa