2014-04-29 26 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