首页 > 解决方案 > 复选框值返回并添加到字符串

问题描述

我正在尝试在表格中取一行复选框,对于表格中的每个 TD,它需要检查复选框是否已勾选,是否为 1,否则为 0。我需要一个 for 循环,我将能够遍历每个 td,确定它是否被检查,如果是,则将 1 添加到二进制字符串,否则将 0 添加到二进制字符串。

这应该以每个 tr 都有自己的唯一二进制字符串结束,这些字符串来自已选中或未选中的复选框。我还想为每个 tr 设置自己的唯一 ID。

下面的代码是我到目前为止所拥有的,但我假设我走错了方向。

任何帮助表示赞赏。谢谢

[ { ID: 000, binary: 0101010101 }  ]
function generate(){


$("#actionTable>tbody").children("tr").each(function(i, rowitem){
    $(rowitem).children("td").each(function(index, item){
        if (index == 0){
            var amid = $(item).data("amid");
        }

        else {
            //Handle checkbox
            var checked = $(item.firstChild).prop('checked')
        }
    });
});

}

标签: javascriptjquerycheckboxdatatablesbinary-string

解决方案


您可以为此使用嵌套的 map()。外部地图迭代行

内部映射迭代每个输入的 checked属性,转换为数字,然后转换为字符串,然后加入数组以获得最终字符串。

我不知道 html 是什么样的,所以现在只使用了每行的行索引

const res = $('tr').map((i, el) => {

  const binary = $(el).find(':checkbox').map((_, inp) => {
      return `${+inp.checked}`;
  }).get().join('');
  
  return { index: i, binary};
  
}).get()

console.log(res)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tr>
    <td><input type="checkbox"></td>
    <td><input type="checkbox" checked></td>
    <td><input type="checkbox"></td>
    <td><input type="checkbox"></td>
  </tr>
  <tr>
    <td><input type="checkbox" checked></td>
    <td><input type="checkbox"></td>
    <td><input type="checkbox" checked></td>
    <td><input type="checkbox"></td>
  </tr>
</table>


推荐阅读