0

这是我的代码

hasSubAcc = function(accPid) {
    $.mobile.eazydb.transaction(function(tx) {
        tx.executeSql('SELECT * FROM Account WHERE Account_Parent_ID="'+accPid+'"', [],
            function(tx, rs){
                if(rs.rows.length == 0) {
                    return false;
                } else {
                    return true;
                }
        });
    });
}

和访问的方法

alert(hasSubAcc(accid));

此警报打印未定义。这段代码有什么问题。任何解决方案请。谢谢。

4

1 回答 1

0

问题很清楚,因为您在函数内使用繁重的进程(即数据库),所以 jquery 在与主线程并行的单独线程中运行此函数,现在在这种情况下,您的值将始终未定义。

var hasSubAcc=-1;您现在可以在检查条件后创建一个全局变量

if(rs.rows.length == 0) {
                    hasSubAcc=0;
                } else {
                    hasSubAcc=1;
                }

现在给一个小的延迟使用

setTimeout(function(){
alert(hasSubAcc);

},500);

or

while(hasSubAcc==-1){
//do nothing
}
alert(hasSubAcc);
于 2013-10-09T12:33:21.953 回答