单击后如何禁用单元格

时间:2014-04-29 17:23:05

标签: javascript html-table cell

我需要在用户点击它后禁用单元格的单击。 让我解释一下:
我点击表格中的单元格n.3,之后不再可以点击。 你可以这样做? 我创建此代码以获取单元格:

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

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

1 个答案:

答案 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>