尝试使用java脚本将选择查询的结果存储到数组时遇到问题。 问题是在函数内部,数组包含正确的值但在它之外是空的,即使我使用全局变量它仍然是空的!
db.transaction(function (transaction) {
var sql = "SELECT * FROM Question where idEnq=" + idEn;
transaction.executeSql(sql, undefined, function (transaction, result) {
var res = document.getElementById('results');
res.innerHTML = "<ul>";
if (result.rows.length) {
for (var i = 0; i < result.rows.length; i++) {
var row = result.rows.item(i);
ch[i] = new qu(row.id, row.text, row.type);
res.innerHTML += '<li>' + row.id + ' ' + ch[i].text + ' ' + ch[i].type + '</li>';
}
tablo = ch;
} else {
alert("No choices");
res.innerHTML += "<li> No choices </li>";
}
res.innerHTML += "</ul>";
}, onError);
}); // here the ch and the tablo array are empty
答案 0 :(得分:5)
您正在使用异步功能。任何想要使用这些函数“返回”的数据的东西都需要在回调中。当然你可以分配这些数据,例如到一个全局变量,但该变量只有在回调运行(异步)后才有值。
答案 1 :(得分:0)
你是新手,所以看看http://pietschsoft.com/post/2008/02/JavaScript-Function-Tips-and-Tricks.aspx 有一部分讨论异步调用JavaScript函数