我正在使用Sencha touch,在从webdb获取数据后我正在尝试更新面板...不会认为这很难,但是我在这里完全缺少一些东西...

var returnHTML = getPresentations();

function getPresentations() {
returnHTML = "<ul>";

db = openDatabase("myDB", "", "TheDB", 500000);
db.transaction(
    function (tx) {
        tx.executeSql("SELECT title FROM Presentations",
            [],
            function (transaction, results) {
                var returnHTML = "<ul>";
                for (var i = 0; i < results.rows.length; i++) {
                    returnHTML += "<li>" + results.rows.item(i).title + '</li>';
                }
                returnHTML += "</ul>";
            },
            onError);
    },
        onTransactError,
        onTransactSuccess);
}

function onTransactSuccess() {
    alert(returnHTML);
    console.log(returnHTML);
    extPanel.update();
}

但是returnHTML一直以未定义的形式返回...不确定在这里发生了什么。

我看着它通过我的SELECT函数...完成之前它是一个完整的字符串。我想念什么?

最佳答案

这里有几个问题。首先是范围问题。您正在使用returnHTML关键字在函数范围内创建新的var。删除函数内部的var关键字,以便设置先前创建的returnHTML实例

这个:

var returnHTML = "<ul>";

应为:
returnHTML = "<ul>";

另外,看来您实际上并没有从函数中返回returnHTML的值。只需将return returnHTML添加到函数的末尾即可。
...
},
        onTransactError,
        onTransactSuccess);

    //Add this line
    return returnHTML;
}

关于javascript - 我的全局变量在transcationSuccess回调中显示为未定义-无法弄清原因,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7956702/

10-09 08:16