在jquery / js中将数组中的元素插入表中

我有一个名为reservations.js的js文件,在这个文件中我有一个保留数组,如:

var reservations = [ { "HotelId": "01", "HotelName": "SPA", "ReservNum": "0166977", "Guest Name": "Jonny", "Room": null, "Type": "SUIT", "Rooms": "1", "Board": "BB", "Status": "IH", "Pax": "2,0,0,0", "Arrival": "07/08/12", "Departure": "09/08/12", "AgentDesc": "FIT", "AgentCode": "FIT", "Group": null, "Balance": "0", "Requests": "", "Remarks": null, "Fit/Group": "FIT", "ReturnGuestName": "", "StatusColor": "LightCoral" }, { "HotelId": "01", "HotelName": "SPA", "ReservNum": "H000192", "Guest Name": null, "Room": null, "Type": "Folio", "Rooms": "0", "Board": "", "Status": "IH", "Pax": "0,0,0,0", "Arrival": "07/08/12", "Departure": "10/09/12", "AgentDesc": "movies", "AgentCode": "001", "Group": null, "Balance": "0", "Requests": "", "Remarks": "", "Fit/Group": "FIT", "ReturnGuestName": "", "StatusColor": "LightCoral" } ]; 

我需要做的是创建一个包含6个colomns的表(在html中):Res。 号码,客人姓名,状态,到达日期,出发日期,房间类型。 并将数组中的元素插入表中的匹配col中。

示例:ReservNum“:”0166977“,因此编号0166977将位于第一个编号Res。编号中。

我的桌子是这样的:

 
Res. NumberGuest NameStatusArrival DateDeparture DateRoom Type
resnumguestnamestatusarrivaldatedeparturedateroomtype

我不知道怎么做。 我试着在js文件中做这样的事情:

 $('#reservations tr').each(function (i) { $(this).find('td').html(reservations[i]); }); 

但它没有用。 (也许我的html表是错的或js,甚至两者都是)。

我是js / jquery的新手,所以我有点不确定我在做什么。

如下所示( 查看工作演示 ):

 var tbody = $('#reservations tbody'), props = ["ReservNum", "Guest Name", "Status", "Arrival", "Departure", "Type"]; $.each(reservations, function(i, reservation) { var tr = $(''); $.each(props, function(i, prop) { $('').html(reservation[prop]).appendTo(tr); }); tbody.append(tr); }); 

像这样:

 $('#reservations tr').each(function (i) { var td = $(this).find('td'); td.html(reservations[i]['ReservNum']); td = td.next(); td.html(reservations[i]['Guest Name']); td = td.next(); td.html(reservations[i]['Status']); td = td.next(); td.html(reservations[i]['Arrival']); td = td.next(); td.html(reservations[i]['Departure']); td = td.next(); td.html(reservations[i]['Type']); td = td.next(); td.html(reservations[i]['Rooms']); td = td.next(); td.html(reservations[i]['Board']); }); 

我不确定你是否想要这个,但有jqGrid 。 它可以接收JSON并创建一个网格。

或者你也可以在Github上使用这个简单的项目: Json-To-HTML-Table

或者你也可以自己使用jQuery来使这更简单。

以下将采用数组数组并将它们转换为行和单元格。

 $.getJSON(url , function(data) { var tbl_body = ""; $.each(data, function() { var tbl_row = ""; $.each(this, function(k , v) { tbl_row += ""+v+""; }) tbl_body += ""+tbl_row+""; }) $("#target_table_id tbody").html(tbl_body); }); 

您可以通过添加类似的内容添加对要排除的键的检查

 var expected_keys = { key_1 : true, key_2 : true, key_3 : false, key_4 : true }; 

在getJSON cbf的开头并添加

 if ( ( k in expected_keys ) && expected_keys[k] ) { ... } 

在tbl_row + =线附近。

我建议使用jquery.tmpl方法。

在HTML中

  

在JS中:

 var reservations = [...]; $("#template-table").tmpl(reservations);