0
我正在使用chrome擴展,我想爲使用sqlite查詢動態填充的表進行分頁。在java腳本中尋呼
我使用本教程進行分頁,並在初始化函數一些修改
http://en.newinstance.it/2006/09/27/client-side-html-table-pagination-with-javascript/
當我想填補它後獲得表的長度,DOM似乎沒有準備好並將結果回報表的長度爲零,這裏是我的一些代碼..
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);
});
}
編輯 在js文件的開頭我做樣T他的
ViewAllNotes(db);
var rows = document.getElementById("notes").rows;
alert("rows "+rows.length);
然後調用尋呼機類,,但它也提醒零?
請再次檢查問題,我在你的答案後編輯它。 – palAlaa
ViewAllNotes調用的第一行是異步的。把它當作ajax電話。以下任何情況在完成之前都無法訪問該狀態。當它完成時沒有guaruntees - 它取決於瀏覽器,db查詢等。最好的選擇是使用承諾模式,單演員模型,事件或pub/sub(觀察者)來告訴剩餘的代碼當SQL完成時。 – AutoSponge
@Alaa一個正確的方法是將一個回調函數傳遞給那個'ViewAllNotes',然後你的函數調用它。 –