在javascript中使用数组中的3列创建表

时间:2015-07-24 19:01:30

标签: javascript jquery

我试图在一个表的每一行中生成3列,我得到了结果但是,我不能每行得到3列。

有人能帮助我喷出这个问题吗?请。

var tTable = "<table border=\"0\">";

var newArray = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"];
var newTr = "<tr>";
for (var i = 0; i < newArray.length; i++) {

 if(i % 3 == 0 ) {
 newTr += "<td>" + newArray[i] + "</td></tr><tr>";
 } else{
 newTr += "<td>" + newArray[i] + "</td>";
 }

}
newTr+="</tr>";
tTable += newTr;
document.write(tTable);

当前结果是

2
3   4   5
6   7   8
9   10  11
12  13  14
15

但是,预期的结果是

2   3   4
5   6   7
8   9   10
11  12  13
14  15

有关如何解决这个问题的任何帮助吗?

4 个答案:

答案 0 :(得分:2)

尝试这样的事情:

var tTable = "<table border=\"0\">";

var newArray = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"];
var newTr = "";
for (var i = 0; i < newArray.length; i++) {

  if(i % 3 == 0)
    newTr += (i > 0) ? "</tr><tr>" : "<tr>"


 newTr += "<td>" + newArray[i] + "</td>";

}
newTr+="</tr>";
tTable += newTr;
document.write(tTable);

当你从元素i = 0开始时,你需要小心,因为0/3 = 0。 在我的示例代码中,我像你一样检查我们是否在行的3º元素,但是当i = 0时我设置了“特殊”条件。 因此,在第一个元素中,我们只创建row(),对于接下来的第3个元素,我们关闭上一行并创建一个新元素。

答案 1 :(得分:0)

由于您的起始索引为零,您的循环在第一次运行时变为零:

if(i % 3 == 0) //where i = 0, you'll get 0

这会结束你的行。你应该解决这个问题。

如果你要在Javascript中“构建”html,你应该真正研究一下document.createElement。 用字符串构建HTML可能是不可预测的。

https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement

我不会在这里解释其他所有内容,你可以阅读文档并弄清楚 - 这可以解决你可能遇到的任何问题。

答案 2 :(得分:0)

错误在于

if(i % 3 == 0 ) {
 newTr += "<td>" + newArray[i] + "</td></tr><tr>";
 }

更改打开和关闭行的方式。

&#13;
&#13;
var tableBuilder = '';
var columns = 3;
var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];

for (var index = 0; index < data.length; index++) {
    
    if (index % columns == 0) {
        if (index > 0)tableBuilder += '</tr>';
        tableBuilder += '<tr>'
    }
    tableBuilder += '<td>';
    tableBuilder += index;
    tableBuilder += '</td>';
}

tableBuilder += '</tr>'
document.getElementById("display").innerHTML = tableBuilder;
&#13;
<table id="display">
</table>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

第一次循环运行时,i = 0.所以0%3 = 0.这会触发行的结束。通过设置i = 1而不是0来使循环从一开始。

for (var i = 1; i < newArray.length; i++) {