2015-10-13 31 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

相关问题