我正在嘗試在javascript中創建一個對象數組,但是當我嘗試將數組打印到控制檯(使用chrome)時,我得到的所有內容都是undefine,除非我在推後纔打印數組。對象的Javascript數組undefined
var subitems = [];
for (var i = 1; i < 1000; i = i + 50) {
$.getJSON('http://gdata.youtube.com/feeds/api/users/' + username + '/subscriptions?max-results=50&start-index=' + i + '&alt=json', function (data) {
var output = "";
for (var x in data.feed.entry) {
var subtitle = data.feed.entry[x].yt$username.$t;
var subchannel = data.feed.entry[x].yt$channelId.$t;
var subphoto = data.feed.entry[x].media$thumbnail.url;
subitems.push({
subtitle: subtitle,
subchannel: subchannel,
subphoto: subphoto
});
console.log(subitems[0]); //Prints Fine
output += '<div class="subtitle"><img src="' + subphoto + '"> <a href="http://www.youtube.com/channel/' + subchannel + '">' + propercase(subtitle) + '</a></div>';
}
maincontent.innerHTML = maincontent.innerHTML + output;
});
}
console.log(subitems[0]); //This is undefined
將console.log放入getJSON函數回調中。所調用的Ajax通常是異步運行的,因此可以在準備就緒時調用該函數,但在運行內部代碼之前立即在getJSON調用之後運行該代碼。否則,它可以鎖定頁面/界面。 –
是否有可能是因爲xhr是異步的,子項目在你登錄時沒有被設置(當它是未定義的)? – HMR
另外,我會避免一次性創建多個Ajax調用。 –