0

我有一张html桌子,在其中一列中我有一个check-box.
所以每一行都有一个checkbox. 我有一个由onclick.
现在我需要对单击复选框的特定行做一些特定的事情。
例如,如果我单击第 13 行上的复选框,我希望能够对表格的第 13 行执行一些操作。我想做的事情是用另一个替换一个 html元素
我已经尝试并看到我可以使用document.getElementsByNameordocument.getElementById但它使用 thenameidvalue。
但是对于动态生成的表,我不确定如何执行此操作。我的意思是如何关联nameid解决这个问题。
解决这个问题的方法是什么?

4

3 回答 3

7

一种方法如下

<tr>
  <td>
   <input type="checkbox" onClick='myOnClickHandler(event, this)' />
  </td>
</tr>

-

function myOnClickHandler(evt, obj){
  // here obj refers to that specific checkbox which was clicked
  var row = obj.parentNode.parentNode; // this way you can access specific row that is clicked
}
于 2013-05-26T17:26:25.650 回答
4

忽略所有其他盲目回答的人...

根据我对您的问题的理解,您在表本身上有一个 onclick 处理程序,并且您想要获取它发生的行。

在这种情况下,您可以这样做:

yourtable.onclick = function(e) {
  e|e=window.event;
  var t = e.srcElement || e.target;
  while(!t.tagName || t.tagName != "TR") t = t.parentNode;
  // t is now the row that the click happened on
}

另一方面,如果您实际上在每个复选框上都有一个 onclick 事件,那么……好吧,实际上您可以使用完全相同的代码。^_^

于 2013-05-26T17:37:49.790 回答
0

我不确定您是如何生成表格的,但您可以做的一件事是为我关心的单元格或行使用 id,并将行号合并到 id 中。例如,将第 13 行的 id 设置为“row_13”。然后在 javascript(确切地说是 onclick 事件)中,您可以从 id 中解析出 13。或者更简单,将行号合并到复选框本身的 id 中(复选框所在的行号),然后您不必使用 javascript 查找复选框的父级。

于 2013-05-26T17:25:02.170 回答