1

選択クエリの結果を 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 + '&nbsp;' + ch[i].text + '&nbsp;' + 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
4

2 に答える 2

5

非同期関数を使用しています。これらの関数によって「返された」データを使用したいものはすべて、コールバックに含まれている必要があります。もちろん、このデータをグローバル変数などに割り当てることもできますが、その変数は、コールバックが (非同期で) 実行された後にのみ値を持ちます。

于 2012-05-06T16:29:22.680 に答える
0

あなたは新しいので、ここを見てくださいhttp://pietschsoft.com/post/2008/02/JavaScript-Function-Tips-and-Tricks.aspx JavaScript関数を非同期的に呼び出すことについて話している部分があります

于 2012-05-06T16:37:54.800 に答える