javascript - 纯 JavaScript 在单击时选择表格行作为对象

标签 javascript

我有一个如下表,当单击行单元格时,我需要选择该行并使用纯 JavaScript 转换为 JavaScript 对象。

<table id="auditors">
  <tr>
    <th>Firstname</th>
    <th>Lastname</th> 
    <th>Age</th>
  </tr>
  <tr>
    <td>Jill</td>
    <td>Smith</td> 
    <td>50</td>
  </tr>
  <tr>
    <td>Eve</td>
    <td>Jackson</td> 
    <td>94</td>
  </tr>
</table>

最佳答案

这里有趣的部分是通过不对键/列进行硬编码来使其通用。这可以通过在构建对象时使用第 th 元素文本作为键来完成:

[].slice.call(document.querySelectorAll("#auditors tr"), 1).forEach(function(row){
      row.addEventListener("click", function(){
           var ths = document.querySelectorAll("#auditors th");
           var obj = [].reduce.call(ths, function(obj, th, i){
               obj[th.textContent] = row.cells[i].textContent;
               return obj;
           }, {});
           console.log(obj);
      });
});
<table id="auditors">
  <tr>
    <th>Firstname</th>
    <th>Lastname</th> 
    <th>Age</th>
  </tr>
  <tr>
    <td>Jill</td>
    <td>Smith</td> 
    <td>50</td>
  </tr>
  <tr>
    <td>Eve</td>
    <td>Jackson</td> 
    <td>94</td>
  </tr>
</table>

关于javascript - 纯 JavaScript 在单击时选择表格行作为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41485807/

相关文章:

javascript - 获取并替换包含::在 div 中的文本

javascript - 如果至少选中一个复选框,则应启用按钮

javascript - 从链接打开时,导航栏隐藏标题

javascript - gulp.watch() 不适用于 Jade

javascript - 如何通过比较 2 个数组将值推送到新数组

javascript - vuejs-datepicker 从当前日期开始,添加样式

javascript - 在 jQuery 内部修改在 jQuery 中创建的 html 元素

javascript - 如何使用jquery点击父行的+号来切换子行?

javascript - 在导航栏中为每个父级添加每个类

JavaScript 组合二维数组