更新SQLite表,JS,PhoneGap,传递变量

时间:2012-02-20 19:50:16

标签: javascript sqlite cordova

我发现为了将变量传递给我的数据库表,我必须将变量创建为全局变量,我不希望这样做。但是,我似乎无法弄清楚如何在不使用匿名函数而不是“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*/ }

任何帮助都将不胜感激。

1 个答案:

答案 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是否已经在那里,因为你可以通过手机创建东西!) - 这变得非常棘手。现在我担心内存消耗= /

希望这能帮助你解决问题