Javascript 将数据属性创建到 table 个单元格中

Javascript to create data attributes into table cells

我使用以下代码将数据属性添加到 table 单元格中,但仅针对页面上的一个 table。如何修改为页面上所有现有的 table 添加数据属性?

提前致谢

    var headertext = [],
headers = document.querySelectorAll("#product-table th"),
tablerows = document.querySelectorAll("#product-table th"),
tablebody = document.querySelector("#product-table tbody");

for(var i = 0; i < headers.length; i++) {
  var current = headers[i];
  headertext.push(current.textContent.replace(/\r?\n|\r/,""));
} 
for (var i = 0, row; row = tablebody.rows[i]; i++) {
  for (var j = 0, col; col = row.cells[j]; j++) {
    col.setAttribute("data-th", headertext[j]);
  } 
}

问题是您调用的是 querySelector() 而不是 querySelectorAll()

进行该调整会得到一个 tbody 集合(而不仅仅是第一个),这也意味着您的循环逻辑需要调整。

详情见下文

var headertext = [],
    headers = document.querySelectorAll("#product-table th"),
    tablerows = document.querySelectorAll("#product-table tr"),
    //*** querySelectorAll() instead of querySelector() ***
    tablebody = document.querySelectorAll("#product-table tbody");

//...

//*** add this loop to iterate through each found tablebody element ***
for(var k = 0, tb; tb = tablebody[k]; k++)
    for (var i = 0, row; row = tb.rows[i]; i++) {
      for (var j = 0, col; col = row.cells[j]; j++) {
        col.setAttribute("data-th", headertext[j]);
      } 
    }