1

jQuery mobile 1.1.1 と PhoneGap を使用して iPad アプリケーションを開発しています。html5sql.js以前はデータベース操作を行っていましたが、正常に動作します。

html5sql.process()for ループ内で使用するにはどうすればよいですか?

元:

html5sql.process( {
                    "sql": "select id,count from my_table",
                     "data": [],
                      "success": function(transaction, results){        
                    },  
                     function(transaction, results){

                        for(var i = 0; i < results.rows.length;i++){

                             /// Line 5
                 html5sql.process( {
                                      "sql": "select count(*) from my_table1 where id= ?",
                                    "data": [results.rows.item(i).id],
                                     "success": function(transaction, resultsD){        
                                 },  
                                      function(transaction, resultsD){

                                            if(results.rows.item(i).count == resultsD.rows.length){
                                  //do my task

                            }
                                       },function(){}
                                    );
                                 }
                           },function(){}
                       );

このコードから出力が得られません。調べてみると5行目までしか動かず、それ以降のコードが動かない。何が問題を引き起こしている可能性がありますか?

4

1 に答える 1

0

コードの構造全体が間違っているようです。ループの内側ではなく外側でデータベースを要求する必要があります。これは、jQMリストビューを生成する私のコードからのチャンクです。クエリ結果は配列に配置され、JavaScriptは実際のHTMLコードを配列から解析します。それが役に立てば幸い

function showRecords() {
    document.getElementById('results').innerHTML = '<li data-role="list-divider">Header</li>';
    db.transaction(function(tx) {
      tx.executeSql("SELECT * FROM OrderList", [], function(tx, result) {
         for (var i = 0, item = null; i < result.rows.length; i++) {
            item = result.rows.item(i);
            document.getElementById('results').innerHTML += 
             '<li data-role="fieldcontain" class="ui-field-contain ui-body ui-br ui-li ui-li-static ui-body-c">'
            +'<a href="#"><p style="font-weight:bold;">'+item['catNo']+'</p>'
            +'.......................
            +'</li>';  
          }     
          $('#results').listview('refresh',true);
      });
   });
}
于 2012-07-28T16:22:44.443 に答える