使用js:order<创建表时出现问题;tr>并且<td>
Issues creating table with js : order <tr> and <td>
我正在尝试编写一个非常简单的js脚本来动态创建一个表。这就是我使用的:
$("#resultsTable").append("<tr>")
for (var i=0; i<statsHolder.length; i++){
$("#resultsTable").append("<td>" + statsHolder[i] + "</td>");
}
$("#resultsTable").append("</tr>")
statsHolder是一个数组,它包含我想在表中显示的数据。我在这里面临的问题是,创建的html代码没有像我希望的那样排序
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
这就是我得到的:
<tr></tr>
<td></td>
<td></td>
<td></td>
<tr></tr>
<td></td>
<td></td>
<td></td>
我想我的问题是循环for之后的代码在循环开始之前执行。我该怎么办?感谢您的帮助:)
使用字符串代替
var table = "<tr>";
for (var i=0; i<statsHolder.length; i++){
table += "<td>" + statsHolder[i] + "</td>";
}
table += "</tr>";
$("#resultsTable").append(table)
.append('</tr>')
完全无效。不能"附加"结束标记。
一般来说,像在循环中那样重复进行DOM操作是低效的。构建一个HTML字符串,然后将其附加为一个单独的块,这样就更容易了,省去了反复重建/修改DOM树的麻烦。
html = '<tr>';
for(...) {
html += '<td>' + foo + '</td>'
}
html += '</tr>';
$('#resultsTable').append(html);
您将<td>
追加到表而不是行将<tr>
保存在一个变量中,并将<td>
元素附加到其中:
var tr = $("<tr/>").appendTo($("#resultsTable"));
for (var i=0; i<statsHolder.length; i++){
$("<td/>").text(statsHolder[i]).appendTo(tr);
}
您也不需要关闭<tr>
或<td>
,因为第一行创建了整个元素
您可以创建<tr>
元素,并在一个临时变量中跟踪它,而无需为其添加必要的ID属性
var myTr = $('<tr>');
$("#resultsTable").append(myTr)
for (var i=0; i<statsHolder.length; i++){
myTr.append("<td>" + statsHolder[i] + "</td>");
}
http://jsfiddle.net/stL42ak3/
jQuery在附加到新行之前解析标记,您需要创建一行,然后附加到该行,然后添加到表
var statsHolder = [ 1,2,3,4,5,6,7,8,9,10];
var me = $('<tr></tr>');
for (var i=0; i<statsHolder.length; i++){
me.append("<td> " + statsHolder[i] + "</td>");
}
$("#resultsTable").append(me);
参见示例
http://plnkr.co/edit/sAnWY3?p=info
您可以这样做:
$("#resultsTable").append("<tr>").attr('id', 'sampletable');
for (var i=0; i<statsHolder.length; i++){
$("#sampletable").append("<td>" + statsHolder[i] + "</td>");
}
如果你想在多行中使用它,试试这个:
for (var j=0; j< 10; j++) {
$("#resultsTable").append("<tr>").attr('id', 'tablenamerow-'+j);
for (var i=0; i<statsHolder.length; i++){
$("#tablenamerow-"+j).append("<td>" + statsHolder[i] + "</td>");
}
}
在这里,您可以将var j
的限制更改为要生成的行数。我只是随便放了10号。如果有多个表使用此集合,则每个表的tablename
也是唯一的。
相关文章:
- 正在检测导航到<a name=“;最新主题”></a>
- 如何附加<ul><李>元素位于某个特定条件的父元素列表之间
- 在<script src=“"></脚本>标签
- 等效于<script src=“;something1.json”></脚本>
- CSS/.JS问题,<ul><李>在Megamenu中
- 如何在<td></td>在Procractor中
- 显示“<script src='some.js'></脚本>"在Html文档中
- 如何将Array转换为<ul><李>以字母为标题的字母列表
- <script src=“//代码.jquery.com/jquery-1.11.1.min.js”></
- 选择<脚本></脚本>作为html正文中的纯文本
- 可折叠<UL><李>不起作用
- $.mobile.loadPage()和$(“linkBtn”).click();t负载<头部></头部&
- <脚本/>vs<脚本></脚本>webpack和angular
- Javascript/RRails-如何包装link_to而不是<a></a>在javascript
- jQuery在处理<选择><选项>
- 布局lt md已被弃用.请使用`layout gt-<xxx>`变种
- 在<%%中定义的访问变量>从<脚本></脚本>
- 页面设计<a href><按钮><输入>在JSP中
- 注入html标记<ul></ul>在我的<李></李>元素
- jQuery选择器<按钮></按钮>