2011-11-10 9 views
0

クロム拡張機能で作業していますが、sqliteクエリを使用して動的に塗りつぶされたテーブルのページングを行いたいと思います。Javaスクリプトのページング

私はページングを作成し、init関数でいくつかの変更を行うために、このチュートリアルを使用していますと、

http://en.newinstance.it/2006/09/27/client-side-html-table-pagination-with-javascript/

私はそれを充填した後、テーブルの長さを取得したい、DOMは準備ができていないように思わそして、テーブルの長さのZEROとして結果のリターンは、ここで私はトンのように作るのjsファイルの初めで

function ViewAllNotes(db){ 
var allListItems; 
    var cur = fromDateToString(new Date(),"date"); 

     db.transaction(function(tx) { 
     tx.executeSql("SELECT NOTE_DESC,NOTE_DATE,NOTE_TIME FROM NOTES where NOTE_DATE = ? order by NOTE_TIME desc ",[cur],function(tx,result){ 
      alert(result.rows.length); 

      for(i=0;i< result.rows.length;i++){ 
       tr= "<tr>"; 
       tr=tr+ "<td>"+ result.rows.item(i)['NOTE_DESC']+"</td>"; 
        tr=tr+ "<td>"+ result.rows.item(i)['NOTE_TIME']+"</td>"; 
       tr=tr+ "</tr>"; 
       allListItems+=tr; 

      } 


      var tableContent= " <thead><tr><th id='activityHeader'>Activity</th> <th>Time</th></tr></thead>"; 
      tableContent = tableContent+"<tbody>"+allListItems+"</tbody>"; 

      $("table#notes").append(tableContent); 
       //$('#notes').dataTable(); 
       },onError); 

     }); 

    } 

EDIT ..私のコードの一部です彼の

ViewAllNotes(db); 
var rows = document.getElementById("notes").rows; 
alert("rows "+rows.length); 

その後、ページャクラス、を呼び出すだけでなく、それがゼロに警告?

答えて

2

SQLコールは非同期です。長さをテストするコードは、SQLが終了してコールバックを起動するまで長さが使用できません。

+0

質問をもう一度確認してください。回答後に編集してください。 – palAlaa

+0

ViewAllNotes呼び出しの最初の行は非同期です。それをajax呼び出しのように扱います。後続するものは、完了するまでその状態にアクセスできません。それが完了するとguarunteesはありません - それはブラウザ、dbクエリなどに依存します。あなたの最善の策は、約束パターン、シングルアクターモデル、イベント、またはpub/sub(オブザーバー)を使用して残りのコードを伝えることですSQLが終了したとき。 – AutoSponge

+1

@Alaaこれを行う適切な方法は、コールバック関数をその 'ViewAllNotes'に渡して、あなたの関数がそれを呼び出すことです。 –

関連する問題