这似乎不是一件容易的事情,也不应该那么复杂,但两天之后我就会陷入困境。我无法弄清楚为什么这个循环运行两次。
db = openDatabase("com.xyz.mobile.db", "", "The App Database", 5 * 1024 * 1024);
db.transaction(function(tx) {
tx.executeSql("SELECT * FROM somedata", [], function(tx, result) {
c = (result.rows.length - 1); //result.rows.length = 2 there are only 2 records
console.log("c = " + c); // outputs 1 in console
for(var i = 0; i < result.rows.length; i++) {
console.log("i = " + i);
console.log(result.rows.item(i)['description']);
if(i == c){
console.log("I will run twice just to make you pound on key board");
break;
}
}
}, null);
});
以下是我在Chrome控制台中获得的内容:
c = 1
i = 0
2/30/2012 22:02:08
i = 1
2/30/2012 22:02:27
I will run twice just to make you pound on key board
c = 1
i = 0
2/30/2012 22:02:08
i = 1
2/30/2012 22:02:27
I will run twice just to make you pound on key board
帮助我欧比万你唯一的希望。
答案 0 :(得分:0)
c = 1
因此result.rows.length = 2
for(var i = 0; i < result.rows.length; i++)
运行2次,我认为你的意思是:for(var i = 0; i < c; i++)
除非你问为什么回调会运行两次,在这种情况下我会得出结论,它被调用了两次......
我会这样做:
db = openDatabase("com.xyz.mobile.db", "", "The App Database", 5 * 1024 * 1024);
console.log('i am here at ' + new Date());
db.transaction(function(tx) {
....
答案 1 :(得分:0)
确保您的脚本位于
中<head> </head>
部分不在
中<body> </body>
所有事情都会好起来的。我的一位同事有同样的问题,这就是解决方法。我们仍然没有一个正确的答案,为什么它运行两次,但有一个去,让我知道这有帮助。