0

PhoneGap Androidアプリケーションを構築していて、SQLLiteDBにJavascriptをロードしています。データベースが正しくロードされ、データの存在が証明されました。

GUIにJQueryMobileFrameworkを使用しています。アプリのサブページの1つで、DBから要素をロードし、それらをリスト要素として出力しようとしています。ただし、開始リストタグで「onload = ""」を呼び出してこれを実行しようとしていますが、関数が呼び出されていません-何かが起こっていることを確認するために単純なアラートでこれを実行しようとしましたが、何も思いつきませんでした。

DBの結果を自分で印刷してみて、とてもうれしいです。今、関数を呼び出そうとしています。どんな助けでもいただければ幸いです。以下のコード:

<div data-role="page" id="cachelist"> <!-- Start of cache list screen -->
        <header data-role="header">
            <h1>Cache List</h1>
            <a href="#home" data-icon="home">Home</a>
        </header>
        <article data-role="content">
            <ul data-role="listview" data-filter="true" id="cachelistList" onload="alert('test')">

            </ul>
        </article>
</div> <!-- End of cache list screen -->

これがdivです-オープニングから電話をかけようとしていることがわかります<ul>

また、ドキュメントのでJS関数を呼び出してみました<head>が、違いはないと思いますが、念のため以下に示します。

<ul onload="cacheListPrint()">
</ul>


function cacheListPrint() {
    alert("Getting this far");
    db.transaction(queryDBPrint, errorCB);
}

function queryDBPrint(tx) {
    tx.executeSql('SELECT * FROM cache', [], querySuccessPrint, errorCB);
}

function querySuccessPrint(tx, results) {
    var rows = results.rows;
    var len = rows.length;
    if(len > 0) {
        for (var i=0; i<len; i++){
            document.getElementById('cachelistList').innerHTML += 
        '<li><h1>' + rows.item(i).name + '</h1></li>';
        }
    }
}

function errorCB(err) {
    alert("Error processing SQL: "+err.code);
}
4

1 に答える 1

2

「.pagebeforeshow」を使用してみてください。「.pagebeforeshow」は、アニメーションが開始する前に新しいページでトリガーされます。

$( '#yourPageID' ).live( 'pagebeforeshow',function(event){
    cacheListPrint();
});
于 2013-03-12T04:42:09.243 に答える