javascript - 单击表格行上的任意位置,它会检查其在...中的复选框?

标签 javascript html forms

我想弄清楚如何做到这一点,但我找不到。基本上我希望能够单击表格行上的任意位置,它会选中/取消选中其所在的复选框。我知道这是可能的,因为这就是 PHPMyAdmin 所做的...

这是我的表格行

<tbody>
<tr id="1" onclick="selectRow(1)"><td width="20px"><input type="checkbox" id="1" name="1/"></td><td>1</td><td>2011-04-21 22:04:56</td><td>action</td></tr>

<tr id="2" onclick="selectRow(2)"><td width="20px"><input type="checkbox" id="2" name="2/"></td><td>2</td><td>2011-04-21 22:04:56</td><td>action</td></tr>

</tbody>

最佳答案

<script type="text/javascript">
function selectRow(row)
{
    var firstInput = row.getElementsByTagName('input')[0];
    firstInput.checked = !firstInput.checked;
}
</script>

...

<tbody>
    <tr onclick="selectRow(this)"><td width="20px"><input type="checkbox" id="chk1" name="chk1/"></td><td>1</td><td>2011-04-21 22:04:56</td><td>action</td></tr>    
    <tr onclick="selectRow(this)"><td width="20px"><input type="checkbox" id="chk2" name="chk2/"></td><td>2</td><td>2011-04-21 22:04:56</td><td>action</td></tr>  
</tbody>

注意:您还遇到了 ID 冲突。您的 ID 应该是唯一的。

这是一个带有编程绑定(bind)的替代方案:

document.querySelector("table").addEventListener("click", ({target}) => {
  // discard direct clicks on input elements
  if (target.nodeName === "INPUT") return;
  // get the nearest tr
  const tr = target.closest("tr");
  if (tr) {
    // if it exists, get the first checkbox
    const checkbox = tr.querySelector("input[type='checkbox']");
    if (checkbox) {
      // if it exists, toggle the checked property
      checkbox.checked = !checkbox.checked;
    }
  }
});
<table>
  <tbody>
    <tr>
      <td>
        <input type="checkbox" id="chk1" name="chk1" />
      </td>
      <td>1</td>
      <td>2011-04-21 22:04:56</td>
      <td>action</td>
    </tr>
    <tr>
      <td>
        <input type="checkbox" id="chk2" name="chk2" />
      </td>
      <td>2</td>
      <td>2011-04-21 22:04:56</td>
      <td>action</td>
    </tr>
    <tr>
      <td>
        <input type="checkbox" id="chk2" name="chk3" />
      </td>
      <td>2</td>
      <td>2011-04-21 25:30:16</td>
      <td>action</td>
    </tr>
  </tbody>
</table>

关于javascript - 单击表格行上的任意位置,它会检查其在...中的复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5833152/

相关文章:

javascript - 声云 CORS

html - 如何使用图像而不是单选按钮?

javascript - 取消一个 jquery submit() 方法

javascript - 在文本中查找格式化问题并从中创建元素

javascript正则表达式与组重复

jquery - 图像映射不起作用

c# - 第二次提交表单时的奇怪行为

ruby-on-rails - 获取表单以使用:method => :delete (rails)

c# - 通过 Windows 窗体发送用户输入

javascript - 如何将 UTC Angular 时间戳转换为本地时间戳?