Javascript 无法访问回调函数中的全局变量?
因此,我正在从TwitchAPI中检索一堆JSON,并尝试将一些内容附加到div中 HTML:Javascript 无法访问回调函数中的全局变量?,javascript,jquery,html,scope,Javascript,Jquery,Html,Scope,因此,我正在从TwitchAPI中检索一堆JSON,并尝试将一些内容附加到div中 HTML: JS: const channels=[“ESL_SC2”、“OgamingSC2”、“cretetion”、“freecodecamp”、“storbeck”、“habathcx”、“RobotCaleb”、“Noobs2 Injas”]; 常量拖缆=document.getElementById(“拖缆”); for(设i=0;i
JS:
const channels=[“ESL_SC2”、“OgamingSC2”、“cretetion”、“freecodecamp”、“storbeck”、“habathcx”、“RobotCaleb”、“Noobs2 Injas”];
常量拖缆=document.getElementById(“拖缆”);
for(设i=0;i
但是,我收到一个无法读取null属性“appendChild”的错误。我尝试了console.log(拖缆)
,但返回空值。访问频道
没有问题,这也是一个全局变量
通过将拖缆
常量放入回调函数,我可以轻松地解决这个问题。但我想知道的是为什么我不能在全球范围内访问它?如果我是正确的,函数中未定义的变量将在外部搜索,直到找到匹配项
谢谢,
詹姆斯。基于以下定义
“让和const声明定义作用于正在运行的执行上下文的LexicalEnvironment的变量。”
for(让i=0;i
似乎是一个问题。请使用匿名方法尝试一次$.getJSON(url,函数(数据){const li=document.createElement(“li”);li.textContent=channels[i];console.log(li);streamers.appendChild(li);});
作为测试,如果您尝试在定义拖缆的下一行追加child,(即在函数外部)这是否有效?您是否确保document.getElementById('streamers')有效
是在id为拖缆的元素添加到DOM后执行的?@BarryThomas它不。。。Strange@JamesBarrett-可能是Teqchiqe上面提到的。可能将常量拖缆放在文档中。就绪函数将解决此问题
<div id="streamers" class="streamers">
</div>
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);
}
for(let i = 0; i < channels.length; i++) { // it enter's to a new scope