我有一张这样的表:
<table>
<tr>
<td>1</td><td>1</td><td>1</td>
</tr>
<tr>
<td>2</td><td>2</td><td>2</td>
</tr>
<tr>
<td>3</td><td>3</td><td>3</td>
</tr>
</table>
在JavaScript中(请不要jQuery)如果用户点击他/她点击哪一行的表格,我该怎么办?
答案 0 :(得分:4)
event.target,getElementsByTagName,traditional event method:
var trs = document.getElementsByTagName('tr');
for (var i = 0; i < trs.length; i++) {
trs[i].onclick = clickHandler;
}
function clickHandler(event) {
alert(this.innerText || this.textContent); // edit: textContent for firefox support
}
答案 1 :(得分:3)
如果您将click事件处理程序附加到表中,则可以获取事件target
,该事件将包含实际单击的元素:
document.getElementById("yourTable").onclick = function(e) {
console.log(e.target);
}
在您的示例中,这可能是td
,因此您可以像这样访问tr
:
var tr = e.target.parentNode;
您可以检查使用tagName
属性单击的元素类型:
var clickedElementType = e.target.tagName; //Returns something like "TD"
或者,您可以迭代表中的所有tr
元素,并将click事件处理程序绑定到每个元素。
答案 2 :(得分:3)
window.onload = function(){
var table = document.getElementById('myTableID');
table.addEventListener('click',test,false);
}
function test(e){
var element = e.srcElement || e.target;
if(element.nodeName == 'TABLE') return;
while(element.nodeName != 'TR') element = element.parentNode;
alert(element.rowIndex);
}
答案 3 :(得分:2)
function handleEvent(e) {
// Do stuff with the row
}
var rows = document.getElementsByTagName('tr');
for (var row in rows) {
row.addEventListener('click', handleEvent);
// or attachEvent, depends on browser
}
答案 4 :(得分:2)
我更喜欢将事件附加到DOM元素与设置onclick。如果您希望它与IE一起使用,您必须进行一些检查:
var trs = document.getElementsByTagName('tr');
var len = trs.length
var clickHandler = function(i){
alert('clicked');
};
for(var i = 0; i < len; i++){
var theRow = trs[i];
if(theRow.addEventListener){
theRow.addEventListener('click',clickHandler);
}
else{
theRow.attachEvent('onclick',clickHandler);
}
}
答案 5 :(得分:1)
为每行添加一个id,然后您可以从Javascript onclick()处理程序查询节点ID
答案 6 :(得分:1)
如何在<tr>
上添加onClick?