所以我从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放入回调函数来轻松解决问题。但我想知道的是为什么我无法在全球范围内访问它?如果我是正确的,函数中未定义的变量将在外部搜索,直到找到匹配为止。
谢谢, 詹姆斯。
答案 0 :(得分:0)
基于以下定义 “let和const声明定义了作用于正在运行的执行上下文的LexicalEnvironment的变量。”
{{1}}