[英]javascript function inside loop run only once
我有一个javascript函数,基本上在我的数据上循环,我在循环内调用了另一个函数,但它仅在最后一个索引上执行一次,这是我的代码,并且我希望每次执行该函数。 基本上在循环内部,我调用在循环的每个索引上运行良好的ajax,但问题是调用仅在最后一个索引上执行的db.transaction函数
db.transaction(populateDB,errorCB);
function renderList(tx, results) {
len = results.rows.length;
console.log("rows" + results.rows.length);
for (var i = 0; i < len; i++) {
(function (i) {
var nid = results.rows.item(i).nId;
$.ajax({
type: 'post',
url: 'http://localhost:50972/LibraryService.asmx/GetTitleSections',
dataType: 'json',
data: "{'MainSectionId':'" + nid + "'}",
contentType: 'application/json; charset=utf-8',
async: false ,
success: function (response) {
var data = response.d;
alert(data.nId);
TitleSectionData = data;
},
error: function (error) {
console.log(error);
}
});
db.transaction(TblTitleSection, errorCB);
})
(i);
// htmlstring += '<li>' + results.rows.item(i).strTitle + '</li>';
// $('#resultList').append("<li>" + results.rows.item(i).strTitle + "</li>");
$('#'+i).append( results.rows.item(i).strTitle );
// $('#tblMainSection').append("<tr><td>" + results.rows.item(i).strTitle + "</td></tr>");
}
// $('#resultList').html(htmlstring);
}
也许在运行ajax调用时循环会继续。 您可以尝试将增量(i ++)放入成功函数中,以强制循环停止直到函数完成。 语法似乎还可以。
更换:
for (var i = 0; i < len; i++) {
带有:
for (var i = 0; i < len;){
和
success: function (response) {
var data = response.d;
alert(data.nId);
TitleSectionData = data;
}
带有:
success: function (response) {
var data = response.d;
alert(data.nId);
TitleSectionData = data;
i++;
}
看看是否可行:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.