0

IE8F12ツールでこのエラーが発生しています

目立たない検証コードを作成しようとしています。ここでは、body onloadでvalidate()メソッドを呼び出し、クラス名に応じて要素の特定のイベントに検証コードを添付します。(たとえば、クラスが「required」のテキストボックスの場合、onblurにrequired()を添付します)

ここに画像の説明を入力してください

このエラーの理由は何ですか?

編集

IE8ウォッチで確認できるように、必要なクラスを持つ要素の配列を返すため、getElementsByClassName()メソッドには問題はありません。

ここに画像の説明を入力してください

4

2 に答える 2

0

この解決策を試してください - 私はそれをテストし、あなたのスニペットでうまくいきました (あなたは彼が "Update:" パラグラフに書いたコードを取らなければなりません):

javascript document.getElementsByClassName IE との互換性

getElementsByClassNameIE8ではサポートされていないようです。

ところで: これは、jQuery を使用する必要がある理由の完璧な例です。このような問題は発生しないためです :)

編集:次のようにテストしました:

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript">

            function getElementsByClassName(node, classname) {
                var a = [];
                var re = new RegExp('(^| )'+classname+'( |$)');
                var els = node.getElementsByTagName("*");
                for(var i=0,j=els.length; i<j; i++)
                    if(re.test(els[i].className))a.push(els[i]);
                return a;
            }

            window.onload = function() {
                var a = getElementsByClassName(document.body,"required");

                for(var i = 0;i < a.length;i++)
                    a[i].onblur = function() { alert("blured")};
            };
        </script>
    </head>
    <body>
       <input class="required" type="text" name="uno" />
       <input class="required" type="text" name="duno" />
    </body>
</html>
于 2013-02-07T13:28:03.410 に答える
0

getElementsByClassNameIE8 ではサポートされていません。

document.querySelectorAllまたはを試すことができますdocument.querySelector。より柔軟で非常に快適に使用できます。

あなたの場合は次のようになります。

var a = document.querySelectorAll(".required");

querySelector("#ID .class")jQuery の場合と同様に、基本的な css セレクターを使用して DOM 要素を取得できます。

于 2013-02-07T13:33:48.280 に答える