2

次のスニペットがあります: http://jsfiddle.net/L7rne/5/およびhttp://jsfiddle.net/L7rne/6/

クリック イベント ハンドラでスクリプトの実行を一時停止すると、チェックボックスがあっても、チェックボックスがオンになることがわかりましたevent.preventDefault()

Firefox 7 と Chrome 15 でこれを試しましたが、どちらも同じように動作します。

私はそれが正しい動作であるとほぼ確信していますが、どういうわけかそのような理由を参照することはできません.

誰かが私を正しい方向に向けることができますか?

編集:

チェックされたチェックボックスから始めると、さらに興味深いものになります: http://jsfiddle.net/L7rne/8/ - チェックボックスはオフになりますが、その値はチェックされたままですhttp://jsfiddle.net/L7rne/9/ -チェックボックスはチェックされませんが、その値はfalseになります

checkbox.checked(これは、 andを使用した純粋な Javascript コードと一致するcheckbox.getAttribute('checked')ため、別の jsfiddle スニペットは貼り付けません)

EDIT2:

コメントの 1 つで COBOLdinosaur が私にこれを指摘しました: http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-cancelation、しかし私見は私の見解を確認するだけです...

4

2 に答える 2

0

イベント ハンドラーが起動するまでに、イベントは既に発生しており、ブラウザーは応答として再レンダリングを行っています。ハンドラーが中断された場合、何も妨げられないため、ブラウザーは作業を完了します。

銀行強盗に警察を呼び、途中で交通事故に遭うようなものです。強盗は逃げる。行為は完了です。

于 2011-11-13T16:58:45.173 に答える
0

問題を理解しているかどうかわかりません。なぜそれが正しい行動ではないのでしょうか?

真剣に、チェックボックスがチェックされているかどうかに基づいて div を表示/非表示にするコードを書いたとしましょう。

したがって、onclick を記述します。チェックボックスのチェックを外してからクリックした場合、div に対して何をすべきだと思いますか? 明らかに、チェックボックスがチェックされていることをイベントが検出することが期待されます。

于 2011-11-13T16:56:03.400 に答える