2

jqm アプリケーションの Web SQL データベースからのデータを html タグに取り込もうとしています。これが私のコードです:

 $("#profile").on("pageinit", function () {
    db.transaction(function (transaction) {
        var sql = "CREATE TABLE IF NOT EXISTS profile " +
            " (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " +
            "nickname VARCHAR(100) NOT NULL," +
            "tankVol VARCHAR(100) NOT NULL," +
            "waterType VARCHAR(100) NOT NULL," +
            "category VARCHAR(100) NOT NULL)"
        transaction.executeSql(sql, undefined);

        var sqlNickname = "SELECT nickname FROM profile";
        transaction.executeSql(sqlNickname, undefined, function (transaction, result) {
            var ul = "<ul>";
            if (result.rows.length) {
                for (var i = 0; i < result.rows.length; i++) {
                    var row = result.rows.item;
                    var nickname = row.nickname;
                    ul += "<li>" + nickname + "</li>";
                    ul += "</ul>";

                }
            }
            var $profileNickname = $("#profile div:jqmData(role=content)");
            $profileNickname.html(ul);
            var $nicknameContent = $profileNickname.find("ul");
            $nicknameContent.listview();
        }, error);
    });
});

私が使用しているテーブルには常に 1 つのレコードしかないため、for ループを使用してテーブルを反復処理する必要があるかどうかはわかりません。問題は次の行にあると思います:

transaction.executeSql (sqlNickname, undefined,

テーブルは正しく機能しており、html は正しく作成されていますが、リスト項目要素では、テーブルのニックネーム列にある値ではなく、文字列「未定義」を取得しているためです。あなたの助けに感謝します!

4

1 に答える 1

0

まず、ループ内で ur ul タグを閉じています。結果セットに複数のエントリがある場合、1 つの開始タグに対して複数の終了タグが取得されます。その終了タグをループの外側に配置します。

しかし、あなたが得ているエラーはこれです:

var row = result.rows.item;

これを次のように変更します。

var row = result.rows.item(i);

したがって、プログラムは結果セットから取得する行を認識しています。単一の結果であっても、これは必要です。

于 2013-05-06T12:18:52.867 に答える