0
所以我從twitch API中檢索了一堆JSON並試圖在div上附加一些東西。無法在我的回調函數中訪問全局變量?
HTML:
<div id="streamers" class="streamers">
</div>
JS:
const channels = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
const streamers = document.getElementById("streamers");
for(let i = 0; i < channels.length; i++) {
let url = "https://api.twitch.tv/kraken/streams/" + channels[i] + "?client_id=blahblahblahblah&callback=?";
function callback(data) {
const li = document.createElement("li");
li.textContent = channels[i];
console.log(li);
streamers.appendChild(li);
}
$.getJSON(url, callback);
}
但是我收到一個Cannot read property 'appendChild' of null
錯誤。我試過console.log(streamers)
但是這返回null。訪問channels
是沒有問題的,這也是一個全局變量。
我可以通過將streamers
const放入回調函數來輕鬆解決問題。但是我想知道的是爲什麼我無法在全球範圍內訪問它?如果我是正確的,那麼在函數中未定義的變量將在外面搜索,直到找到匹配。
謝謝, 詹姆斯。
似乎是懸而未決的問題。嘗試一次使用匿名方法'.getJSON(URL,函數(數據){li} {document.createElement(「li」); li.textContent = channels [i]; console.log(li); streamers .appendChild(li); });' – Satpal
作爲一個測試,如果你試圖在定義拖放的下面的行上添加子節點,(即在函數之外)是否起作用? –
您確定在id爲'streamers'的**元素已添加到DOM之後,是否正在執行'document.getElementById('streamers')'**? – Ankit