我如何知道onclick发生的具体行?

时间:2013-05-26 17:20:53

标签: javascript html dom

我有一个html表格,在其中一列中我有一个check-box 所以每个行都有一个checkbox。 我有一个由onclick触发的javascript函数 现在我需要的是针对单击复选框的特定行执行特定操作 例如。如果我单击第13行上的复选框,我希望能够对表格的第13行执行某些操作。我要做的某事是用另一个替换html元素 我试过并看到我可以使用document.getElementsByNamedocument.getElementById,但它使用nameid值。
但对于动态生成的表,我不知道如何做到这一点。我的意思是如何关联nameid来解决这个问题 解决这个问题的方法是什么?

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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事件,那么......好吧,实际上你可以使用完全相同的代码。 ^ _ ^

答案 2 :(得分:0)

我不确定你是如何生成你的表的,但你可以做的一件事就是对我关心的单元格或行使用id,并在id中加入行号。例如,将第13行的id设置为“row_13”。然后在javascript(准确的onclick事件)中你可以解析13的id。或者更容易,将行号合并到复选框本身的id(复选框所在的行号),然后您不必使用javascript搜索复选框'parent。