2013-03-08 3 views
0

Этот код создает раскладку для сидения. Классы определяют стоимость мест, а объекты jquery содержат макет, а данные для меня определяют классы.Ссылка на ячейку jQuery

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", "xx", "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] 
}; 

var counter = 0; 
var tbl_body = ""; 
var print = ""; 

$.each(jsondata.seats, function (j, d) { 
var tbl_row = ""; 
$.each(this, function (k, v) { 
    var seatPrice = jsondata.seatPrice[j][k];    
     if (v == "1" || v == "a") { 
      counter++; 
     } 

     if (v == 0) { 
      print = " "; 
     } else { 
      print = v; 
     } 
     var seatPriceClass = ''; 
     if (seatPrice == "0") { 
      seatPriceClass = "p"; 
     } else if (seatPrice == "1") { 
      seatPriceClass = "n"; 
     } else { 
      seatPriceClass = "none"; 
     } 
     if (v == "a") { 
      seatPriceClass = "x"; 
     } 


     tbl_row += "<td class=" + seatPriceClass + " id=" + counter + ">" + print + "</td>"; 

    }); 

    tbl_body += "<tr>" + tbl_row + "</tr>"; 
    counter = 0; 

}); 
$("#plan").html(tbl_body); 

В двух массивах таблица создана для создания макета. Счетчик начинает отсчет строки, когда находит место (т. Е. Места 1, места не равны 0, поэтому, когда он достигает 1, он начинает отсчитываться до конца строки). Это все правильно и работает до сих пор, за исключением того, что мне нужно использовать объект rows в файле JSON для создания ссылки на строку, которую я могу добавить к данным счетчика, чтобы дать ячейке идентификатор (т.е. c7), который затем я могу использовать как справочник места.

я пробовал эту функцию вложенными, но он не работает, или бросать ошибки

$.each(function(j, g){ 
    var row_id =jsondata.rows[j][g]; 
    }); 

Как бы я получить эту функцию, или что-то подобное для работы в своих массивах?

+0

Может быть ваш вопрос не является полным, но я с подозрением 'jsondata.seatPrice [J] [K]; ', Как я вижу, seatPrice - это одноразмерный массив, но вы рассматриваете его как двумерный. Может быть, я скучаю? – sakhunzai

+0

@sakhunzai 'seatPrice' - это массив, работающий одновременно с' seat', так что j является добавочным значением, а k - данными –

ответ

0

Просто используйте jsondata.rows[j]

tbl_row += "<td class=" + seatPriceClass + " id=" + jsondata.rows[j] + counter + ">" + print + "</td>"; 
+0

Я не знаю, почему я об этом не думал. Благодаря! –

+0

Добро пожаловать. Вам нужно немного подкорректировать логику, чтобы генерировать идентификаторы ** ТОЛЬКО ** на реальные места. Потому что сейчас он генерирует повторяющиеся идентификаторы и делает разметку недействительной. – peterm

+0

Теперь я нашел обходное решение, спасибо! –

Смежные вопросы