JS如何通过每行的button来使该行的checkbox选中

JSP页面做个一个table,第一列是cheeckbox类型的,最后一列设置了button,想通过JS来控制每行的button点击时候使该行的checkbox为选中。我J... JSP页面做个一个table,第一列是cheeckbox类型的,最后一列设置了button,想通过JS来控制每行的button点击时候使该行的checkbox为选中。
我JS里是这么写的,但是不管点哪行的按钮都是把第一行的checkbox选中的,应该怎么改呢
var id = document.getElementById("id");
id.checked = true;
展开
 我来答
百度网友6705c13
2017-05-09 · TA获得超过801个赞
知道小有建树答主
回答量:613
采纳率:83%
帮助的人:189万
展开全部

假设表格结构:

<table border="1">
  <tr>
    <td><input type="checkbox" /></td>
    <td>内容</td>
    <td><button>测试</button></td>
  </tr>
  <tr>
    <td><input type="checkbox" /></td>
    <td>内容</td>
    <td><button>测试</button></td>
  </tr>
</table>

脚本:(用了jquery)

$(function(){
  $("button").click(function(){
    $(this).closest("tr").find("input:first")[0].checked = true;
  });
});
更多追问追答
追问
能用JS吗,大佬,我JQuery还会啊
追答
function init() {
  //所有按钮
  var buttons = document.getElementsByTagName("button");

  for(var i = 0;i < buttons.length;++i) {
    buttons[i].onclick = function(e) {
      var tr = e.target.parentNode.parentNode;

      //找所有子节点,不光包含td,还可能包含#text一类的,需要过滤
      for(var j = 0;j < tr.childNodes.length;++j) {
        var node = tr.childNodes[j];
        if(node.tagName == "TD") {
          node.firstChild.checked = true;
          break;
        }
      }
    }
  }
}

在合适的时机比如body onload时调用一下init()就可以了。

如果表格结构固定,上面代码中的过滤部分可以简化成一句搞定:

tr.childNodes[1].firstChild.checked = true;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式