【问题标题】:To add column with title "total" by javascript通过javascript添加标题为“total”的列
【发布时间】:2018-12-07 13:32:44
【问题描述】:

我正在尝试使用 for 循环添加一列。 我没有收到任何错误,但什么也没发生。 有人可以帮忙吗? 提前致谢。

 function add(){
    //att läsa hela tabell
    var tabell = document.getElementById("c");
    //att läsa taggan tr
    var rader = tabell.getElementsByTagName("tr");

    //att läsa alla rader i tabellen
    for(var i = 0; i < rader.length; i++){
        //medan alla rader läsas upp skapar td element
        var nyCell = document.createElement("td");
        //indikerar nyCell i alla rader
        rader[i].appendChild(nyCell);

        var nyRad = document.createElement("tr");
    }
}

【问题讨论】:

  • 控制台有错误吗?只要rader.length 大于 0,代码本身对我来说就很好。
  • 带有id = "c" 的元素是表格吗?如果是这样,该表是否有任何行?请在您的帖子中添加相关的HTML 作为示例
  • nyCell 是空的,所以只有在控制台中检查它才会显示
  • @mplungjan 好吧,除非表格已经具有可以显示的格式。
  • 请点击edit,然后点击[&lt;&gt;] sn-p 编辑器并创建一个带有相关HTML和CSS的minimal reproducible example

标签: javascript for-loop cell add


【解决方案1】:

您的代码在给定如下表格的情况下工作

注意:我在某个阶段调用函数add()。它必须在表存在之后。

function add() {
  //att läsa hela tabell
  var tabell = document.getElementById("c");
  //att läsa taggan tr
  var rader = tabell.getElementsByTagName("tr");

  //att läsa alla rader i tabellen
  for (var i = 0; i < rader.length; i++) {
    //medan alla rader läsas upp skapar td element
    var nyCell = document.createElement("td");
    //indikerar nyCell i alla rader
    nyCell.innerHTML = "Hejsan";
    rader[i].appendChild(nyCell);
  }
}
add()
td {
  border: 1px solid black
}
<table id="c">
  <tr></tr>
</table>

我相信你真的是这个意思

function add() {
  /*att skapa th som står summa*/
  var tableHeadRow = document.querySelector("#c thead tr"); //ONE row

    var nyTh = document.createElement("th");
    nyTh.innerHTML = "Summa";
    tableHeadRow.appendChild(nyTh);

  var tableBody = document.querySelector("#c tbody");
  var tableBodyRows = tableBody.querySelectorAll("tr"); // ALL rows
  //att läsa alla rader i tabellen
  for (var i = 0; i < tableBodyRows.length; i++) {
    //medan alla rader läsas upp skapar td element
    var nyCell = document.createElement("td");
    //indikerar nyCell i alla rader
    nyCell.innerHTML = "";
    tableBodyRows[i].appendChild(nyCell); // add ONE cell to the end of each row
  }

  /*to add new row*/
  var nyRad = document.createElement("tr");
  var nyCell1 = document.createElement("td");
  var nyCell2 = document.createElement("td");
  var nyCell3 = document.createElement("td");
  var nyCell4 = document.createElement("td");
  nyCell4.innerText="Total";
  nyRad.appendChild(nyCell1);
  nyRad.appendChild(nyCell2);
  nyRad.appendChild(nyCell3);
  nyRad.appendChild(nyCell4);
  tableBody.appendChild(nyRad);
}
add()
    td {
      border: 1px solid black
    }
<table id="c">
  <thead>
    <tr>
      <th>Column 1</th>
      <th>Column 2</th>
      <th>Column 3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Row 1 Cell 1</td>
      <td>Row 1 Cell 2</td>
      <td>Row 1 Cell 3</td>
    </tr>
    <tr>
      <td>Row 2 Cell 1</td>
      <td>Row 2 Cell 2</td>
      <td>Row 2 Cell 3</td>
    </tr>
  </tbody>
</table>

【讨论】:

  • 哦,谢谢 Mplugjan!但是我想知道为什么你最后也放了 add() ?
  • 必须执行。如果你不执行它,什么都不会发生 - 正如你似乎已经发现的那样
  • @rewe - 请查看this post
  • 好的,谢谢@mplungjan!还有一个问题,如果我只想添加 并将空单元格添加到每一行,我应该像下面一样单独写吗? for (var i = 0; i
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 2011-09-03
  • 2020-11-27
  • 1970-01-01
  • 2020-07-02
相关资源
最近更新 更多