我正在使用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/