变量不是't在循环中更改JavaScript
Variable isn't changing in for loop - JavaScript
为什么将每个feedName输出为相同的名称(MedryBW)?我花了一段时间搞砸了,搞不明白。我希望它在循环的每次迭代中输出提要的名称,而不是一遍又一遍地重复相同的名称。谢谢大家。
var feeds = ["Towellie", "TrumpSC", "TeamSp00ky", "TwitchPlaysPokemon", "Widgitybear", "AriaBlarg", "TheMexicanRunner", "OPNerd", "rabbitbong", "Wingsofdeath", "MedryBW"];
$(document).ready(function(){
for(x = 0; x < feeds.length; x++){
var feedName = feeds[x];
$.getJSON('https://api.twitch.tv/kraken/streams/' + feeds[x] + '?callback=?', function(data) {
if(data.stream === null){
$('#feeds').append("<p>" + feedName + " is offline </p>");
} else {
$('#feeds').append("<p>" + feedName + " is streaming " (data.stream.game) + "/<p>");
}
});
}
});
因为回调函数运行的时间要晚得多,而不是在循环中,而且它只是在循环结束后获得变量值(最后一个值),所以使用bind
函数将变量传递给函数
var feeds = ["Towellie", "TrumpSC", "TeamSp00ky", "TwitchPlaysPokemon", "Widgitybear", "AriaBlarg", "TheMexicanRunner", "OPNerd", "rabbitbong", "Wingsofdeath", "MedryBW"];
$(document).ready(function() {
for(x = 0; x < feeds.length; x++){
var feedName = feeds[x];
$.getJSON('https://api.twitch.tv/kraken/streams/' + feeds[x] + '?callback=?', function(feedName, data) {
if (data.stream === null) {
$('#feeds').append("<p>" + feedName + " is offline </p>");
}else{
$('#feeds').append("<p>" + feedName + " is streaming " + (data.stream.game) + "/<p>");
}
}.bind(this, feedName));
}
});
正如您在for循环中编写Ajax一样,成功回调在for循环执行之后执行
var feeds = ["Towellie", "TrumpSC", "TeamSp00ky", "TwitchPlaysPokemon", "Widgitybear", "AriaBlarg", "TheMexicanRunner", "OPNerd", "rabbitbong", "Wingsofdeath", "MedryBW"];
$(document).ready(function() {
feeds.forEach(function(feedName) {
$.getJSON('https://api.twitch.tv/kraken/streams/' + feedName + '?callback=?', function(data) {
if (data.stream === null) {
$('#feeds').append("<p>" + feedName + " is offline </p>");
} else {
$('#feeds').append("<p>" + feedName + " is streaming " + (data.stream.game) + "/<p>");
}
});
});
})
以上更改将在中起作用
您可以通过.实现这一点
var feeds = ["Towellie", "TrumpSC", "TeamSp00ky", "TwitchPlaysPokemon", "Widgitybear", "AriaBlarg", "TheMexicanRunner", "OPNerd", "rabbitbong", "Wingsofdeath", "MedryBW"];
$(document).ready(function(){
var divText;
for(x = 0; x < feeds.length; x++){
var feedName = feeds[x];
$.getJSON('https://api.twitch.tv/kraken/streams/' + feeds[x] + '?callback=?', function(data) {
if(data.stream === null){
divText = divText + '<p>'+feedName+' is offline </p>';
}else{
divText = divText + '<p>'+feedName+' is streaming '+(data.stream.game) +'</p>'
}
});
}
$('#feeds').append(divText);
//or $('#feeds').html(divText);
})
相关文章:
- 控制器不会进入for循环:javascript
- 使用来自不同循环Javascript的数据创建数组
- 在for循环-Javascript中创建新对象
- 日期循环 Javascript
- 在循环 javascript 内部创建一个数组
- 使用 for 循环 JavaScript 的打印范围
- 使用RegExp循环数组而不是for循环(Javascript)
- 如何避免循环Javascript
- 如何停止循环 - Javascript 100%
- 我想让我的程序重新运行开头,有点像循环 JavaScript
- css转换在for循环javascript中无法正常工作
- 在for循环javascript中创建对象
- do/while语句中的if-elseif语句无限循环javascript
- 在for循环Javascript中对数字进行分类和计数
- 如何一次运行一次循环javascript
- 请,需要帮助循环Javascript事件
- 在递归循环javascript之后,为JSON键变量使用自定义HTML元素
- 嵌套循环javascript棋盘
- 如何重新启动循环javascript循环
- 在循环 JavaScript 之后刷新页面