2014-04-29 24 views
-1

我需要在用户点击单元格后禁用点击单元格。 让我解释一下:
我点击表格中的单元格n.3,之后就不应再点击了。 你可以这样做吗? 我做这个代码获得小区:如何在点击后禁用单元格

var trs = document.getElementsByTagName('td'); 

for(var i = 0; i < trs.length; i++) 
{ 
trs[i].onclick = clickHandler; 
console.log([i]); 
} 

回答

1

不是一个JavaScript程序员,但我会尽力回答:

你的代码只是在所有的“TD”元素使用初始化onclick事件clickHandler事件。

每个事件处理程序都会承认一个事件,该事件引用了该事件中的对象主体。所以,如果你实现clickHandler事件是这样的:

// Add event to your clickHandler prototype if not already present 
funcion clickHandler(event) { 
    // Your existing code 
    event = event || window.event; // window.event used in IE<9 
    event.target.onclick = null; // event.target is the element clicked (myself!) 
} 

这样你的clickHandler事件将停用上一度被称为目标,这似乎是你问的onclick事件。我没有尝试过,但可能会工作或给你的想法。

编辑:完整的示例:

<html> 
<head> 
<title>Test</title> 
<script language="javascript"> 
function clickHandler(event) { 
    window.alert("You clicked on an unclicked cell!"); 
    event = event || window.event; 
    event.target.onclick = null; 
} 

window.onload = function() { 
    var trs = document.getElementsByTagName('td'); 

    for(var i = 0; i < trs.length; i++) 
    { 
     trs[i].onclick = clickHandler; 
    } 
} 
</script> 
</head> 
<body> 
<h1>Test</h1> 
<table> 
    <tr> 
     <td>asdf</td> 
     <td>asdf</td> 
     <td>asdf</td> 
    </tr> 
    <tr> 
     <td>asdf</td> 
     <td>asdf</td> 
     <td>asdf</td> 
    </tr> 
    <tr> 
     <td>asdf</td> 
     <td>asdf</td> 
     <td>asdf</td> 
    </tr> 
</table> 
</body> 
</html> 
+0

严正不起作用。 :( – user3344186

+0

是的,它可以工作;试试更好,我已经用一个完整的工作示例编辑了答案,不是很优雅,我不是一个网络程序员 – roirodriguez

+0

是的,它的功能:)谢谢。如果单元格已被点击,您能否解释如何运行检查? – user3344186