我已将大型应用程序中的一个难以跟踪的错误隔离到以下最小工作示例:
<html>
<head>
<title>Test page</title>
<script type="text/javascript" language="JavaScript">
function OnClickHandler (t) {
t.disabled = true;
var n = parseInt (t.getAttribute ("num"));
document.body.appendChild (document.createTextNode (
"num = " + t.getAttribute ("num") + ", checked = " + t.checked.toString () + " | "
));
t.setAttribute ("num", n + 1);
t.disabled = false;
}
</script>
</head>
<body>
<input type="checkbox" num="0" onclick="OnClickHandler(this)" />
<br />
</body>
</html>
我期待的是num
属性的值和复选框的选中状态之间会有完美的同步。但是这个条件不成立,可以通过快速单击复选框来查看。以下是示例输出:
输入:两次非常快速的点击,短暂的暂停,两次非常快速的点击,短暂的暂停,单击
数 = 0,检查 = 真 | 数 = 1,检查 = 真 | 数 = 2,检查 = 假 | 数 = 3,检查 = 假 | 数字 = 4,检查 = 真 |
该逻辑的意图是该num
属性仅在检查状态更改时才更改。应用程序的很多后续逻辑都依赖于这种同步。实现此同步的推荐方法是什么?
在此先感谢您的帮助。