不是一個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>
嚴正不起作用。 :( – user3344186
是的,它可以工作;試試更好,我已經用一個完整的工作示例編輯了答案,不是很優雅,我不是一個網絡程序員 – roirodriguez
是的,它的功能:)謝謝。如果單元格已被點擊,您能否解釋如何運行檢查? – user3344186