我有一个HTML表格,其中每行都是可点击的,并充当手风琴。当单击该行时,每行下方都会显示一些元素(另一个表,其他几个div元素等)。下面是与功能的小提琴:使用JavaScript重新创建元素的更有效方式
http://jsfiddle.net/7dfwrje7/5/
的问题是,如果我有n行数据,我不得不为隐藏元素的每一行代码追加以便为它工作即,此代码:
<tr>
<td colspan="6">
<input id="row1" type="checkbox">
<table>
<tr>
<th>Phone Number</th>
<td>555-3226</td>
<th>City:</th>
<td>New York</td>
</tr>
<tr>
<th>Hire Date:</th>
<td>8/13/12</td>
<th>Salary:</th>
<td>$48,000</td>
</tr>
</table>
</td>
</tr>
此外,我会产生行每次给这个输入一个新的ID:
<input id="row1" type="checkbox">
我有一个回路,该回路I”我已经用JavaScript编写了所有这些。新表行在每次迭代中创建和我有此HTML代码手动创建的每个元素,并将其添加到每个生成的行代码:
<tr>
<td colspan="6">
<input id="row1" type="checkbox">
<table>
<tr>
<th>Phone Number</th>
<td>555-3226</td>
<th>City:</th>
<td>New York</td>
</tr>
<tr>
<th>Hire Date:</th>
<td>8/13/12</td>
<th>Salary:</th>
<td>$48,000</td>
</tr>
</table>
</td>
</tr>
所以循环创造的所有行内,我有这样的:
var createRow = document.createElement("TR");
var createCell = docment.createElement("TD");
tbody.appendChild(createRow);
tbody.appendChild(createCell);
etc.....
而且我有这么多html来创建这种方式,所以大约有100-200行JavaScript代码创建这些元素。所有这些都对我有用,但是我的问题是:是否有更好更高效的方式来完成此操作,而不是在JavaScript代码中重新创建每个HTML元素?在编写更少的代码来完成所有这些并且在性能方面高效的方面,这两方面都很有效率?我试图坚持纯JavaScript,没有图书馆。任何建议将不胜感激。
'copy_tr = parent_tr_node。cloneNode(true);'然后通过孩子设置值可能会更便宜。同样,你可以写一个_function_并且每次都传递你想要的东西。此外,是否真的有必要嵌套表格? –
谢谢您的建议。是的,我知道嵌套表不好,但在这种情况下,我需要拥有它们。 – Rebecca
会createDocumentFragment帮助吗? http://jsperf.com/createelement-vs-createdocumentfragment –