9

このファイルには、次のような予約の配列があります。

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 つの列を持つテーブル (html) を作成することです: Res. 番号、ゲスト名、ステータス、到着日、出発日、部屋タイプ。配列の要素をテーブル内の一致する列に挿入します。

例: ReservNum": "0166977" ということで、0166977 が最初の列の Res. Number になります。

私のテーブルは次のようなものです:

<table id="reservations">
        <thead>
            <tr>
                <th>Res. Number</th><th>Guest Name</th><th>Status</th><th>Arrival Date</th><th>Departure Date</th><th>Room Type</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>resnum</td><td>guestname</td><td>status</td><td>arrivaldate</td><td>departuredate</td><td>roomtype</td>
            </tr>
        </tbody>
    </table>

どうすればいいのかわからない。私はjsファイルで次のようなことをしようとしました:

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

しかし、それは機能していません。(おそらく、私の html テーブルまたは js、あるいはその両方が間違っている可能性があります)。

私はjs/jqueryが初めてなので、自分が何をしているのか少しわかりません。

4

4 に答える 4

18

以下のようなもの(動作デモを確認してください):

var tbody = $('#reservations tbody'),
    props = ["ReservNum", "Guest Name", "Status", "Arrival", "Departure", "Type"];
$.each(reservations, function(i, reservation) {
  var tr = $('<tr>');
  $.each(props, function(i, prop) {
    $('<td>').html(reservation[prop]).appendTo(tr);  
  });
  tbody.append(tr);
});
于 2012-12-23T09:18:46.430 に答える
1

これがあなたが望むものかどうかはわかりませんが、 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 += "<td>"+v+"</td>";
        })
        tbl_body += "<tr>"+tbl_row+"</tr>";                 
    })
    $("#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 += 行のあたり。

于 2012-12-23T09:17:12.160 に答える
1

このような:

$('#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']);
});
于 2012-12-23T09:25:19.273 に答える
0

jquery.tmplメソッドを使用することをお勧めします。

HTMLで

<script id="template-table" type="text/x-jquery-tmpl">
        <tr>
            <th>Res. Number</th><th>Guest Name</th><th>Status</th><th>${Arrival}</th><th>${Departure}</th><th>Room Type</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>${ReservNum}</td><td>${Guest_Name}</td><td>${Status}</td><td>arrivaldate</td><td>departuredate</td><td>${Type}</td>
        </tr>
    </tbody> 
</script>

JS で:

var reservations = [...];
$("#template-table").tmpl(reservations);
于 2012-12-23T09:23:47.120 に答える