【问题标题】:javascript how to add a row every forth cell?javascript如何每四个单元格添加一行?
【发布时间】:2013-07-25 08:38:39
【问题描述】:

我正在用 javascript 创建一个表。我希望我的表格在一行中有 4 个单元格,所以第 5 个单元格将在新行中。

如果我有 10 个对象要显示在单元格上,我将有 2 个完整的行和 1 个只有 2 个单元格的行。

这是我拥有的代码。有什么想法吗??

var a = { style: ["1","2","3","4", "5","6"]};

var oldTable = document.getElementById('example'),
newTable = oldTable.cloneNode();

var b = a.style.length;
for (var i= 0; i <= 4; i++){
    if (b >= 4) {
    var tr = document.createElement('tr');

        var k = "";
    for(var j = 0; j < b; j++) {
        var td = document.createElement('td');
        var div = document.createElement('div');
        div.style.width="175px";
        div.style.height="250px";

        div.appendChild(document.createTextNode(a.style[k++]));
        td.appendChild(div);
        tr.appendChild(td);
           }
    }
newTable.appendChild(tr);
}
oldTable.parentNode.replaceChild(newTable, oldTable);

【问题讨论】:

  • 错误或问题是什么? IE。这怎么破?
  • 这只会复制第一个单元格并有 6 个单元格而不是添加新行...
  • 你知道你错过了一个}吗?尝试正确缩进您的代码 - 之后更容易发现!
  • 不确定外部 for 循环的用途?还尝试增加 k,尽管它已初始化为 ""。
  • 我想制作最多 5 行,并在每 4 个单元格之后创建一行。有谁能指导我吗?

标签: javascript for-loop html-table


【解决方案1】:

完全删除您的外循环以及if。那么你主要只需要这个:

if(j%4 == 0 && j != 0){
    newTable.appendChild(tr);
    tr = document.createElement('tr');        
}

这将每 4 条记录开始一个新行。

http://jsfiddle.net/X5g2p/1/

【讨论】:

  • 还有一个问题!这将在一行下创建行。有没有办法解决这个问题?
  • 我不确定你所说的行下的行是什么意思。我确实做了一个小改动以避免创建第一个空行。
  • 我还有一个问题。如果 var a = [{"style":"1","color":"WHITE","price":"$1.00"}, {"style":"2","color":"黑色","价格":"$1.00"}]?我试过了,但我无法让它正常工作。
  • 如果你改变你的对象的结构,你将不得不改变你的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多