【发布时间】:2011-06-27 12:04:37
【问题描述】:
我正在尝试在循环包含的 executeSql 函数中使用循环变量。但是如果我不使用闭包,循环变量将获得最后一个值。当我使用闭包时,我没有从 executeSql 函数中获取结果列表。例子:
for (var i = 0; i < count; i++) {
tx.executeSql('SELECT AColumn FROM ATable WHERE refID=' + i, [],
function(tx,results) //success function
{
//do something
}
,errorfunction);
}
在成功函数中,“i”总是“count+1”。
为了解决这个问题,我改变了我的代码:
for (var i = 0; i < count; i++) {
tx.executeSql('SELECT AColumn FROM ATable WHERE refID=' + i, [],
(function(tx,results) //success function
{
//do something
})(i)
,errorfunction);
}
有了这个,我得到了“我”的权利。但是“结果”是不确定的。
我尝试像这样传递“tx”和“i”:
(function(tx,results) //success function
{
//do something
})(tx,null,i)
有了这个我明白为什么我得到“结果”为空。我想了解如何获得 executeSql 的正确结果。
【问题讨论】:
标签: javascript webkit closures