这可能需要一些解释,所以请耐心等待。
我正在尝试创建X个表,每个表的长度(列)各不相同Y,每个表有4行,X和Y由用户确定。我已经解决了这一部分。
问题在于每个表中的每个单元格都必须包含自己的文本框,该文本框将包含从数据库派生的数字。如果用户在文本框中更改数字,则更改必须反映在数据库中。
鉴于表的数量和表的长度是未知的,我无法提前设置文本框的名称,因此必须动态设置。
我遇到了以下代码:
var pageNumber = 1;
eval("var text" + pageNumber + "=123;");
alert(text1);
//alert shows '123'
我相信可以修改每个文本框的名称(修改后)。我遇到的麻烦是如何访问这个新文本框,因为我不知道它的名字(在创建表之后)?
我计划使用3d数组保存要在表中每个单元格中显示的数字,并计划使用此数组命名单元格。
例如,数组可以是array [i] [j] [k],并假设i = 1,j = 2,k = 3,它将保存数字8。动态创建的文本框名称类似于:textBox123
我如何将数组(包含8个)中的单元格与该新文本框相关联,然后在我不知道其名称提前时检索并存储一个新值?
我的想法,我该如何写
<input type="text" name="textBox123" value=array[i][j][k]>
到HTML?
再说一次,也许我是在考虑这个问题,并且有一种更好的方法。如果是这样,请告诉我。
HTML:
<div id="tables"></div>
JavaScript:
var tables = [
// Table #1
[
[111, 112, 113], // Row #1
[121, 122, 123] // Row #2
],
// Table #2
[
[211, 212, 213, 214], // Row #1
[221, 222, 223, 224], // Row #2
[231, 232, 233, 234] // Row #3
],
// Table #3 (empty!)
[]
],
nr, nc, i, j, k,
name, value, textBox, cell, row, table,
$tables = $("#tables");
for (i = 0; i < tables.length; ++i) {
nr = tables[i].length;
nc = nr > 0 ? tables[i][0].length : 0;
table = "<table>";
for (j = 0; j < nr; ++j) {
row = "<tr>";
for (k = 0; k < nc; ++k) {
name = "textBox" + (i + 1) + (j + 1) + (k + 1);
value = tables[i][j][k];
textBox = "<input type='text' name='" + name + "' value='" + value + "'>";
cell = "<td>" + textBox + "</td>";
row += cell;
}
row += "</tr>\n";
table += row;
}
table += "</table>\n";
$tables.append(table);
}
参见jsfiddle。第三个空表将作为一个空table
标记插入,但这不是必需的。
我要提到的是,由于您需要将这些表连接到数据库,因此一种优雅的解决方案是使用客户端MVC框架,例如Backbone.js。在这里,您可以找到一本不错的入门书。该视图可以使用类似上面的一个代码render
表。该tables
数组可以存储在Collection中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句