1

ユーザーがチェックボックスをオン/オフにすると、何らかのアクションを実行する必要があるユースケースを開発しています。

例:

関数スニペット:

<script>
function toggleAgreement(event) {
if(event.target == 'some pre-defined ID') {
//do action;
}
</script>

問題:

この機能は Firefox/Chrome でうまく機能しており、IE9 でも機能しています。IE-7/8 だけでは動作しません。

IE スクリプト コンソールを観察すると、これらのエラーは --> bodyOnload に表示されます (この特定のチェックボックスをトリガーしたときではありません)。

「オブジェクトはプロパティまたはメソッド 'querySelectorAll' をサポートしていません」iframe.html、行 x 文字 y

このリンクをクリックすると、次のように表示されます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=utf-8" http-equiv=Content-Type></HEAD>
<BODY></BODY></HTML>

私は調査し、Jqueryの使用方法を次のように見つけました。 "document.querySelectorAll('.className')"

問題は、この問題が IE9 で蔓延している場合でも、上記のエラーがスローされないのはなぜですか?

4

2 に答える 2

1

event.target は IE と互換性がありません。代わりにこれを試してください(クロスブラウザ互換です):

<script>
    function toggleAgreement(event) {
        var evt = e || window.event; // this assigns evt with the event object
        var current = evt.target || evt.srcElement; // this assigns current with the event target
        if(current == 'some pre-defined ID') {
            //do action;
        }
    }
</script>
于 2013-05-27T12:47:55.537 に答える
0

jQueryの使用は許可されていますか? これにより、イベントの操作がはるかに簡単になります (初期の IE バージョンをサポートするために 1.x バージョンを使用することが不可欠です)。jQuery を使用すると、次のように簡単に実行できます。

$("#myCheckbox").click(function() {
   if ($(this).is(":checked")) {
     // Do whatever you want
   }
});

「イベントターゲット」を使用する必要はもうありません。クリックされたチェックボックスは、提供された「$(this)」オブジェクトで使用できます。ただし、必要に応じて利用できます

于 2013-05-27T12:39:59.793 に答える