【发布时间】:2014-04-06 15:05:03
【问题描述】:
我希望有人对我有线索。我是 javascript 新手,我正在尝试使用动态生成的表来构建这个结构。
<table>
<tr>
<td>value1</td>
<td>value2</td>
<td>value3</td>
<td>value4</td>
</tr>
<tr>
<td>value5</td>
<td>value6</td>
<td>value7</td>
<td>value8</td>
</tr>
<tr>
<td>value9</td>
<td>value10</td>
<td>value11</td>
<td>value12</td>
</tr>
<tr>
<td>value13</td>
<td>value14</td>
<td>value15</td>
<td>value16</td>
</tr>
</table>
我尝试做的是在每第四对<td> 之后回显<tr>。
像这样:
var tbody_el = $("#somevalue_id"); //is the id of the table, which needs to be filled with `<tr>` and `<td>`.
var counter = 0;
$.each(TonsOfData.getValues(), function(index, somevalue) {
//var tr_el = $("<tr></tr>");
var td_checkbox_el = $("<td></td>");
var cbName = "cb_" + somevalue.displayName + "_name";
var cbId = "cb_" + somevalue.displayName + "_id";
var inputEl = $("<input type='checkbox' name='" + somevalue.displayName + "' id='" + cbId + "'/>");
inputEl.data("somevalueId", somevalue.id);
inputEl.attr("checked", "checked");
inputEl.change(valueChoicesClick);
var div_value_id = "div_value_" + somevalue.id + "_id";
var div_value_el = $("<div id='" + div_value_id + "' align='left'></div>");
var td_value = $("<td></td>");
td_checkbox_el.append(inputEl);
if(counter == 0 || (counter +1)%4 == 0){
echo "<tr>";
}
td_value.append(td_checkbox_el, "<br> Displayname: " + somevalue.displayName,"<br> Unit: "+ somevalue.unitstring," <br>",div_value_el);
if((counter +1)%4 == 0) {
echo "</tr>";
}
//tbody_el.append(tr_el);
}
);
这甚至可能吗? 还是我走错了路?
非常感谢您的任何建议!
编辑:
我找到了一个适合我的解决方案。我怀疑有人会遇到同样的问题,但我还是想分享一下。
我创建了一个在循环中递增的计数器,并为 <td> 部分提供了一个类 ID。
if(counter<4){
td_value = $("<td class='select1'></td>");
}
if(counter>3 && counter <8){
td_value = $("<td class='select2'></td>");
}
if(counter>7 && counter <12){
td_value = $("<td class='select3'></td>");
}
if(counter>11 && counter <16){
td_value = $("<td class='select4'></td>");
}
if(counter>15 && counter <20){
td_value = $("<td class='select5'></td>");
}
之后,我使用 JQuery wrapAll()-函数添加了我的 <tr>。成功了。
$('#somevalue_id td.select1').wrapAll('<tr/>');
$('#somevalue_id td.select2').wrapAll('<tr/>');
$('#somevalue_id td.select3').wrapAll('<tr/>');
$('#somevalue_id td.select4').wrapAll('<tr/>');
$('#somevalue_id td.select5').wrapAll('<tr/>');
我知道,这不是最优雅的解决方案,但它确实有效。 再次感谢所有给我提示的人,你们帮我解决了这个问题!
【问题讨论】:
-
echo不是 JavaScript。但是您可以像当前创建 td 元素一样创建 tr 元素。然后将 trs 追加到表中,并将 tds 追加到最新的 tr。 -
最明显的解决方案是for循环递增4,如
for (var i=0; i<something; i+=4),然后在tr等中获取当前和下一个三个值。
标签: javascript jquery html dynamic tablecolumn