2013-03-08 33 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时,它开始计数直到行的末尾)。到目前为止,这一切都是正确的,除了我需要使用JSON文件中的rows对象来创建一个行引用,我可以将这些行引用添加到计数器数据中,以便为单元格提供一个id(即c7),然后我可以使用它作为座位参考。

我试过这个函数嵌套,但它不工作,或抛出错误

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

我将如何得到这个功能,或者类似的在我的阵列工作的东西吗?

+0

可能是你的问题是不完整的,但我怀疑jsondata.seatPrice [J] [k]的'; ',因为我看到seatPrice是单维数组,但是您将其视为二维数组。可能是我失踪了? – sakhunzai 2013-03-08 06:09:27

+0

@sakhunzai'seatPrice'是一个与'seats'同时运行的数组,因此j是递增值,k是数据 – 2013-03-08 06:11:55

回答

0

只需使用jsondata.rows[j]

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

我不知道为什么我没有想到这一点。谢谢! – 2013-03-08 06:13:35

+0

不客气。您需要稍微调整一下逻辑,以便仅生成IDS **到真正的座位。因为现在它会生成重复的ID并且使标记无效。 – peterm 2013-03-08 06:17:22

+0

我已经提出了一种解决方法,谢谢! – 2013-03-08 06:31:52