ホームページ > 記事 > ウェブフロントエンド > Internet Explorer で「document.getElementsByClassName」を使用するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。