Reputation: 337
This is a json file containing seat information.
var jsondata = {
"who": "RSNO",
"what": "An American Festival",
"when": "2013-02-08 19:30",
"where": "User Hall - Main Auditorium",
"seats": ["00000000000000000011111111111111000000000000000000", "0000000000000001111111111111111aaa0000000000000000", "00000000000000aa111111111111111aaaaa00000000000000", "00000000000001111111111111111111111111000000000000", "000000000aa00aaaaaaaaaaaaaaaaaaaaaa1100aa000000000", "00000001111001111111111111111111111100111100000000", "00000aaaaaa0011aaaaaaaaa11111111aaa1100aaaaaa00000", "00001111111001111111111111111111111100111111100000", "000aaaaaaa110011111111111111111111110011aaaaaaa000", "00111111111100111111111111111111111001111111111000", "00aaaaa1111110011111111111111111111001111aaaaaaa00", "11111111111100111111111111111111111001111111111110", "0aaaaaaaaaaaa001111111111111111111100aaaaaaaaaaaa0", "01111111111110011111111111111111110011111111111100", "00000000000000001111111111111111110000000000000000", "01111111111111001111111111111111100111111111111100", "01111111111111001111111111111111110011111111111110", "01111111111111001111111111111111100111111111111100", "00a11111111111100111111111111111100111111111111a00", "00111111111111100111111111111111001111111111111000", "00011111111111110011111111111111001111111111111000", "00111111111111100111111111111111001111111111111000", "00011111111111110011111111111111001111111111111000", "00011111111111110011111111111110011111111111110000", "0000000111a111111001111a1111a110011111111110000000", "00000000111111110011111111111110011111111000000000", "00000000001111111001111111111110011111110000000000", "00000000000000111001111111111100111000000000000000"],
"rows": ["DD", "CC", "BB", "AA", "Z", "Y", "X", "W", "V", "U", "T", "S", "R", "Q", "P", "N", "M", "L", "K", "J", "H", "G", "F", "E", "D", "C", "B", "A"],
"seatPrice": [" 00000000000000 ", " 0000000000000000000 ", " 0000000000000000000000 ", " 0000000000000000000000000 ", " 00 000000000000000000000000 00 ", " 0000 00000000000000000000000 0000 ", " 000000 000000000000000000000000 000000 ", " 0000000 00000000000000000000000 0000000 ", " 000000000 0000000000000000000000 000000000 ", " 0000000000 000000000000000000000 0000000000 ", " 00000000000 00000000000000000000 00000000000 ", "000000000000 000000000000000000000 000000000000 ", " 000000000000 00000000000000000000 000000000000 ", " 000000000000 0000000000000000000 000000000000 ", " 000000000000000000 ", " 0000000000000 00000000000000000 0000000000000 ", " 0000000000000 000000000000000000 0000000000000 ", " 0000000000000 00000000000000000 0000000000000 ", " 0000000000000 0000000000000000 0000000000000 ", " 0000000000000 000000000000000 0000000000000 ", " 0000000000000 00000000000000 0000000000000 ", " 0000000000000 000000000000000 0000000000000 ", " 0000000000000 00000000000000 0000000000000 ", " 0000000000000 0011111111100 0000000000000 ", " 0000000000 111111111111 0000000000 ", " 00000000 1111111111111 00000000 ", " 0000000 111111111111 0000000 ", " 000 00000000000 000 "],
"priceLookup": [10, 20]
};
$.getJSON('jsondata' , function(data) {
var tbl_body = "";
$.each(jsondata.seats, function() {
var tbl_row = "";
$.each(this, function(k , v) {
tbl_row += "<td>"+v+"</td>";
});
tbl_body += "<tr>"+tbl_row+"</tr>";
});
$("#plan").html(tbl_body);
});
The function at the end works fine in terms of using the seat layout, however, I need to add the information held in seatPrice
as the class of the td
s generated from the function. I've tried essentially copying the last function but for the seatPrice
object and appending it to the table, but this doesn't seem to work. Any suggestions as to how I would go about this?
Upvotes: 0
Views: 1486
Reputation: 2458
It seems like you're use of $.each() to loop is complicating the problem. As popnoodles said, you can use a vanilla for loop.
Is something like this what you're going for?
$.getJSON('jsondata' , function(data) {
var tbl_body = "";
var tbl_row = "";
for (var i in data.seats){
tbl_row += "<td>"+i+"</td>";
}
for (var i in data.seatPrice){
tbl_row += '<td class="' + i + '">this is a td</td>';
}
tbl_body += "<tr>"+tbl_row+"</tr>";
$("#plan").html(tbl_body);
});
Upvotes: 0
Reputation: 30099
There are some issues with your code to begin. Why do you need to $.getJSON()
if you already have the data in jsondata
? If you are really getting this data from an AJAX call, that's fine, but you need to refer to data
in the function, not jsondata
, or rename the parameter to the anonymous function.
The first argument in the function passed to $.each()
is the index of the array. You can use that to grab the seatPrice
of the same index:
$.each(jsondata.seats, function (j, d) {
var tbl_row = "";
$.each(this, function (k, v) {
var seatPrice = jsondata.seatPrice[j][k];
var seatPriceClass = '';
if(seatPrice == "0") {
seatPriceClass = "notawesome";
} else if(seatPrice == "1") {
seatPriceClass = "awesome";
} else {
seatPriceClass = "none";
}
tbl_row += "<td class='"+seatPriceClass+"'>" + v + "</td>";
});
tbl_body += "<tr>" + tbl_row + "</tr>";
});
Demo: http://jsfiddle.net/jtbowden/pJhgK/
Upvotes: 1