javascript - 如何获取同一行中选中的复选框的 td 值

标签 javascript jquery

在我的项目中,我使用表格。

我的 html 代码是:

 <table id="assTB" border="1px" cellspacing="0">
       <colgroup>
       <col style="width:15%">
       <col style="width:15%">
       <col style="width:70%">
       </colgroup>
       <tbody>
       <tr style="height:35px">
      <td   bgcolor="#CDCDCD"><b><input type="checkbox" id="assCB"></b></td>
       <td   bgcolor="#CDCDCD"><b>id</b></td>
       <td   bgcolor="#CDCDCD"><b>name</b></td>
       </tr>
       </tbody>
       <tr>
       <td><b><input type='checkbox'></b></td>
       <td>1</td>
       <td>Tom</td>
       </tr>    
       <tr>
       <td><b><input type='checkbox'></b></td>
       <td>2</td>
       <td>John</td>
       </tr>
   </table>
  <input type="button" onclick="selAtt()">

我的js代码是:

function selAtt()
{
    var xzyId=document.getElementById("assTB");//tableID
    var checked=xzyId.getElementsByTagName("input");//checkbox


    var names = [];

    for(i=1;i<checked.length;i++)
    {
      if(checked[i].checked)
      {
        //rete=checked[i].parentNode.parentNode;//works fail
        //rete=checked[i].closest("tr");//works fail
        //rete=checked[i].parent().prev();//works fail
        rete = checked[i].parent().prev();//works fail
        var stNum=rete.find("td:eq(2)").text();
        names.push(stNum);
      }
    }

    for(i=0;i<names.length;i++)
    {
        alert(names[i]);
    }
    }
}

现在我想在同一行中选中复选框时获取名称。

我尝试了四种方法来获取 rete,如上面的代码所示。

但不幸的是,他们都失败了。谁能帮助我?

最佳答案

  1. 使用map()添加到数组中
  2. 使用 :checked 仅选择选中的复选框
  3. 使用 :nth-child 获取所需的 td(:nth-child 索引从 1 开始)

$("#button").click(function() {
  var arr = $(':checkbox:checked').map(function() {
    var tr = $(this).closest('tr');
    var obj = {};

    obj['id'] = tr.find('td:nth-child(2)').text();
    obj['name'] = tr.find('td:nth-child(3)').text();

    return obj;
  }).get();
  console.log(arr)

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="assTB" border="1px" cellspacing="0">
  <colgroup>
    <col style="width:15%">
    <col style="width:15%">
    <col style="width:70%">
  </colgroup>
  <tbody>
    <tr style="height:35px">
      <td bgcolor="#CDCDCD"><b><input type="checkbox" id="assCB"></b></td>
      <td bgcolor="#CDCDCD"><b>id</b></td>
      <td bgcolor="#CDCDCD"><b>name</b></td>
    </tr>
  </tbody>
  <tr>
    <td><b><input type='checkbox'></b></td>
    <td>1</td>
    <td>Tom</td>
  </tr>
  <tr>
    <td><b><input type='checkbox'></b></td>
    <td>2</td>
    <td>John</td>
  </tr>
</table>
<input type="button" value="button" id="button">

仅提供名称:

$("#button").click(function() {
  var arr = $(':checkbox:checked').map(function() {
    var tr = $(this).closest('tr');
    return tr.find('td:nth-child(3)').text();
  }).get();
  console.log(arr)

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="assTB" border="1px" cellspacing="0">
  <colgroup>
    <col style="width:15%">
    <col style="width:15%">
    <col style="width:70%">
  </colgroup>
  <tbody>
    <tr style="height:35px">
      <td bgcolor="#CDCDCD"><b><input type="checkbox" id="assCB"></b></td>
      <td bgcolor="#CDCDCD"><b>id</b></td>
      <td bgcolor="#CDCDCD"><b>name</b></td>
    </tr>
  </tbody>
  <tr>
    <td><b><input type='checkbox'></b></td>
    <td>1</td>
    <td>Tom</td>
  </tr>
  <tr>
    <td><b><input type='checkbox'></b></td>
    <td>2</td>
    <td>John</td>
  </tr>
</table>
<input type="button" value="button" id="button">

关于javascript - 如何获取同一行中选中的复选框的 td 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49290894/

相关文章:

c# - 在 asp.net 中验证表单数据后如何获取 javascript 确认框?

php - 将打开我的应用程序或应用程序商店的共享链接

javascript - 如何在向下滚动页面时添加CSS类

javascript - 除非唯一,否则默认表单字段值将被清除

jquery - 从 iframe 调用关闭 colorbox

javascript - 空白场跟踪

javascript - DOM 元素未从 Angular Controller 更新

javascript - 处理 jQuery 中的所有事件类型

javascript - HTML5 Canvas/Flash 替代品?

javascript - 无法启动 Electron 打包的 JS 应用程序。未捕获的 TypeError : require. nodeRequire 不是函数