Html5表示值未定义

时间:2011-01-14 22:44:53

标签: javascript sql database sqlite client-side

这是Chrome扩展程序,让我说我有这段代码:

var DB = openDatabase('CMPDB', '1.0', 'Database for CMP', 4 * 1024 * 1024); 
LoadFromDB();   

function LoadFromDB() {

    DB.transaction( function(tx)
    {           
        tx.executeSql('CREATE TABLE IF NOT EXISTS table(X, Y, Z UNIQUE)');

        tx.executeSql('SELECT * FROM table', [], function (tx, results) {
            var len = results.rows.length;
            for (i = 0; i < len; i++) {                 
                alert(results.rows.item(i).X.text);
                alert(results.rows.item(i).Y.text);
                alert(results.rows.item(i).Z.text);                         

            }
        });
    });
}

为什么所有的警报都会以未定义的形式返回,假设该表已在之前创建,并且chrome上的Dev工具表示值在表中?

1 个答案:

答案 0 :(得分:0)

我认为在表创建完成之前,您的SELECT语句可能被称为。您是否尝试将SELECT查询移动到回调函数,以便在运行CREATE TABLE SQL之后将其称为。类似的东西:

tx.executeSql('CREATE TABLE IF NOT EXISTS table(X, Y, Z UNIQUE)', function(tx) {
    tx.executeSql('SELECT * FROM table', [], function (tx, results) {
        var len = results.rows.length;
        for (i = 0; i < len; i++) {                 
            console.log(results.rows.item(i).X.text);
            console.log(results.rows.item(i).Y.text);
            console.log(results.rows.item(i).Z.text);                         
        }
    });            
});