我需要在用户点击它后禁用单元格的单击。
让我解释一下:
我点击表格中的单元格n.3,之后不再可以点击。
你可以这样做?
我创建此代码以获取单元格:
var trs = document.getElementsByTagName('td');
for(var i = 0; i < trs.length; i++)
{
trs[i].onclick = clickHandler;
console.log([i]);
}
答案 0 :(得分: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>