2015-10-13 81 views
0

這裏是我的html代碼如何將行數據逐個追加到表中?

<tr id="tHead"> 
     <td></td> 
     <td></td> 
     <td></td> 
     <td></td> 
     <td></td> 
    </tr> 

這裏是我的js代碼

$(document).ready(function(){ 
    $.ajax({ 
     url: "data.json", 
     dataType: "json", 
     success: function(obj) { 
      for(i=0;i<obj.data.length;i++){ 
       $("#tHead").after("<tr>" + 
       "<td>" + obj.data[i].name1 + 
       "</td><td>" + obj.data[i].name2 + 
       "</td><td>" + obj.data[i].name3 + 
       "</td><td>" + obj.data[i].name4 + 
       "</td><td>" + obj.data[i].name5 + 
       "</td></tr>"); 
      } 
     } 
    }); 
}); 

現在我可以後 「的tHead」 TR追加數據。 由於我在我的js代碼中使用.after,因此數據行將在「tHead」之後逐一追加,這將使我的第一個數據行成爲表中的最後一個。

我需要第一個數據行時,我將它附加在表上的第一行。 我能做些什麼才能使其正確?

我嘗試使用.append但不工作,新行將直接追加到「tHead」行的末尾。

+1

使用反向循環,'for(i = obj.data.length -1; i> = 0; i--){' – Tushar

回答

-2

倒置的循環,它會工作,只要你想

$(document).ready(function() 
{ 
    $.ajax(
    { 
     url: "data.json", 
     dataType: "json", 
     success: function(obj) 
     { 
      for(i=obj.data.length-1;i>=0;i--) 
      { 
       $("#tHead").after("<tr>" + 
       "<td>" + obj.data[i].name1 + 
       "</td><td>" + obj.data[i].name2 + 
       "</td><td>" + obj.data[i].name3 + 
       "</td><td>" + obj.data[i].name4 + 
       "</td><td>" + obj.data[i].name5 + 
       "</td></tr>"); 
      } 
     } 
    }); 
}); 
+3

添加一些說明或刪除此答案並將其添加爲評論 – Tushar

+0

您可以編寫同樣的評論也。 @Diptox – pedram

+0

@rajeshmpanchal只是因爲答案很短,不能作爲評論,但並不意味着它不是答案。這是對問題的答案,LQ,但是是一個答案。 – cybermonkey

1

您只需要在父表上使用.append(),而不是在#tHead

success: function(obj) { 
    for(var i = 0; i < obj.data.length; i++) { 
     $("#tHead").parent("table").append("<tr>" + 
     "<td>" + obj.data[i].name1 + 
     "</td><td>" + obj.data[i].name2 + 
     "</td><td>" + obj.data[i].name3 + 
     "</td><td>" + obj.data[i].name4 + 
     "</td><td>" + obj.data[i].name5 + 
     "</td></tr>"); 
    } 
} 

你行使用.after()會現在按照時間順序添加。

第二種解決辦法是對:last僞選擇器與#tHead使用的.siblings()選擇器一起使用.after()

success: function(obj) { 
    for(var i = 0; i < obj.data.length; i++) { 
     $("#tHead").siblings("tr:last").after("<tr>" + 
     "<td>" + obj.data[i].name1 + 
     "</td><td>" + obj.data[i].name2 + 
     "</td><td>" + obj.data[i].name3 + 
     "</td><td>" + obj.data[i].name4 + 
     "</td><td>" + obj.data[i].name5 + 
     "</td></tr>"); 
    } 
} 
-1

事情是這樣的,也許:

$(document).ready(function(){ 
    $.ajax({ 
    url: "data.json", 
    dataType: "json", 
    success: function(obj) { 

    $("#tHead").append("<tr>");//----------- open new row. 
    obj.forEach(function(row) { 
     $("#tHead").append("<td>"); 
     $("#tHead").append(row);//---------- actual info. 
     $("#tHead").append("</td>"); 
    }); 
    $("#tHead").append("</tr>");//---------- close new row. 
    } 
    } 
});  
}); 

一個很好的讀取可以在這裏找到:https://stackoverflow.com/a/9329476/2645091 上不同的方式來遍歷數組。

+0

這不能解決問題。 OP的問題是訂單行出現在他的表格中。他不希望它們直接出現在'#tHead'下面,而是最後一個'tr'後面。 – NachoDawg

+0

@NachoDawg對此我不同意。如果你引用這一行:「當我追加它時,我需要第一個數據行將成爲第一行,我能做些什麼才能使它正確?」清楚地表明他在問什麼。我想你認爲他的代碼示例就是他的問題。 – Karlta05

相關問題