私はこれを理解するのにひどい時間を過ごしています。フォームがあります。
<form id="form1" .. target="right" action="blablah">
<input .. />
<input type="submit" id="ycsubmit" onclick="..." value="Go!" />
</FORM>
送信時に実行する必要がある関数があります: ycClick();
ycClick() が実行されたら、onClick を 30 秒間 null に切り替えてから、30 秒後にもう一度押すと ycClick() をもう一度実行し、さらに 30 秒間無効にする必要があります。私はこの100の異なる方法を試しましたが、これは私が今持っているものです:
function ycClick(){
...
}
var isEnabled = true;
function toggleSubmit() {
if (isEnabled = true) {
document.getElementById("ycsubmit").onclick = null;
} else {
document.getElementById("ycsubmit").onclick = timer();
}
//isEnabled = !isEnabled;
}
function timer(){
ycClick();
toggleSubmit();
setTimeout("toggleSubmit()", 30000);
}
次に、timer(); をトリガーするように onclick を設定しました。そのままで、これは timer() をオフに設定し、ycClick() をオフに設定してから onclick を null に切り替えますが、30 秒後に元に戻すことはありません。私はそれがこの行と関係があると思います:
isEnabled = !isEnabled;
しかし、削除しても違いはなく、まったく同じように動作します。