无法弄清楚为什么循环运行两次

时间:2012-02-26 18:35:25

标签: javascript html5 sqlite

这似乎不是一件容易的事情,也不应该那么复杂,但两天之后我就会陷入困境。我无法弄清楚为什么这个循环运行两次。

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

帮助我欧比万你唯一的希望。

2 个答案:

答案 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>

所有事情都会好起来的。我的一位同事有同样的问题,这就是解决方法。我们仍然没有一个正确的答案,为什么它运行两次,但有一个去,让我知道这有帮助。