ホームページ  >  記事  >  ウェブフロントエンド  >  Internet Explorer で「document.getElementsByClassName」を使用するにはどうすればよいですか?

Internet Explorer で「document.getElementsByClassName」を使用するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-08 16:54:02847ブラウズ

How Can I Use `document.getElementsByClassName` in Internet Explorer?

JavaScript document.getElementsByClassName IE との互換性

document.getElementsByClassName を使用して特定のクラスの要素配列を取得しようとすると、IE で互換性の問題が発生します。このメソッドは IE では直接サポートされていません。

Jonathan Snook のメソッド:

正規表現の一致に基づいて要素を検索する Jonathan Snook の getElementsByClassName 関数を使用すると、次のような問題が発生する可能性があります。 IEでのエラー。これは、関数がドキュメントのメソッドとして定義されていないためです。

解決策:

関数を IE と互換性を持たせるには、別の関数として呼び出す必要があります。ドキュメントを参照せずに:

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;
}

var tabs = getElementsByClassName(document.body,'tab');

IE8 互換性:

IE8 以降の場合は、別のアプローチを使用できます:

if(!document.getElementsByClassName) {
    document.getElementsByClassName = function(className) {
        return this.querySelectorAll("." + className);
    };
    Element.prototype.getElementsByClassName = document.getElementsByClassName;
}

var tabs = document.getElementsByClassName('tab');

このアプローチは、IE8 でサポートされている querySelectorAll メソッドを利用します。このメソッドは getElementsByClassName.

と同様に動作します。

以上がInternet Explorer で「document.getElementsByClassName」を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。