我试图在一个表的每一行中生成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
有关如何解决这个问题的任何帮助吗?
答案 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>";
}
更改打开和关闭行的方式。
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;
答案 3 :(得分:0)
第一次循环运行时,i = 0.所以0%3 = 0.这会触发行的结束。通过设置i = 1而不是0来使循环从一开始。
for (var i = 1; i < newArray.length; i++) {