This question already has answers here:
$getJSON and for loop issue
(4个答案)
3年前关闭。
我正在尝试从Pokemon API中获取名称并将其放入html的div字段中,但是当我将文本放入.getJSON函数中时,jQuery的.text()函数似乎并未将文本放入html中。只是好奇这可能是什么问题?谢谢。
JavaScript代码
(4个答案)
3年前关闭。
我正在尝试从Pokemon API中获取名称并将其放入html的div字段中,但是当我将文本放入.getJSON函数中时,jQuery的.text()函数似乎并未将文本放入html中。只是好奇这可能是什么问题?谢谢。
<div class="container">
<div class="row">
<div class="col-sm-3" id="1">
<div id="name1"></div>
</div>
<div class="col-sm-3" id="2">
<div id="name2"></div>
</div>
<div class="col-sm-3" id="3">
<div id="name3"></div>
</div>
<div class="col-sm-3" id="4">
<div id="name4"></div>
</div>
</div>
</div>
JavaScript代码
$(document).ready(function() {
/*Works*/
for(var j = 1; j < 5; j++){
$("#name" + j).text("HELLO");
}
/*Doesn't work*/
for(var j = 1; j < 5; j++){
var webAddress2 = "http://pokeapi.co/api/v1/pokemon/" + j;
$.getJSON(webAddress2, function(data) {
console.log("test");
$("#name" + j).text("SOME TEXT");
});
}
});
最佳答案
在循环内创建一个闭包。由于getJSON
是异步操作,因此循环将完成其执行,而无需等待getJSON
完成每次执行。
您需要将j
的值与闭包绑定
$(document).ready(function() {
for (var j = 1; j < 5; j++) {
(function(index) {
var webAddress2 = "http://pokeapi.co/api/v1/pokemon/" + index;
$.getJSON(webAddress2, function(data) {
console.log("test");
$("#name" + index).text("SOME TEXT");
});
}(j))
}
});
关于javascript - .getJSON()中的jQuery text(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39115767/
10-12 12:46