我发现为了将变量传递给我的数据库表,我必须将变量创建为全局变量,我不希望这样做。但是,我似乎无法弄清楚如何在不使用匿名函数而不是“updateSelectedBird”的情况下传递变量。
updateBirds(3); //this is normally called from within another function
function updateBirds(_birdIndex) {
var db = window.openDatabase("birdingDB", "1.0", "Birding DB", 200000);
birdIndex = _birdIndex;
db.transaction(updateSelectedBird, errorSelBirds);
}
function updateSelectedBird(tx) {
tx.executeSql('UPDATE Birds SET sighted = "1" WHERE id = ' + birdIndex);
}
function errorSelBirds(err) { /*error function*/ }
任何帮助都将不胜感激。
答案 0 :(得分:0)
嘿,我遇到了同样的问题,但我找到了一个解决方法,你必须使用annoynmous自我调用函数。恼人的= /
db_callback = function(tx) {
for(var x in data) {
(function()
var _tmpX = x;
tx.executeSql("select from bla bla bla", [], function(tx2, result) {
console.log(_tmpX); //atleast this time it increments and isn't the last key of the data collection.
});
})();
}
}
我遇到了这个问题,因为我想检查表中是否存在数据,同时从服务器执行同步。 (我需要检查rowID是否已经在那里,因为你可以通过手机创建东西!) - 这变得非常棘手。现在我担心内存消耗= /
希望这能帮助你解决问题