0

forループとremoveChildを使用して、特定のクラス名を持つすべての要素を削除するスクリプト(@ briguy37によって支援されたremoveChild?を使用して同じ名前の複数の要素を削除)があります。FFでは完全に機能しますが、IEではエラーが発生します

Object doesnt support this property or method

プロジェクトは次の場所で表示できます:http://jsfiddle.net/U8xkg/31/

エラーは次の行を参照しています:

var childNodesToRemove = document.getElementById(parentId).getElementsByClassName('foo');

何か案は?

ありがとう。

4

4 に答える 4

2

残念ながら、IEにはgetElementsByClassNameメソッドはありません。

于 2011-07-25T14:03:41.310 に答える
2
document.getElementsByClassName = function(class_name)
{
    var all = this.getElementsByTagName('*');
    var matchArray = new Array();
    var re = new RegExp("(?:^|\\s)" + class_name + "(?:\\s|$)");
    for (var i = 0, l = all.length; i < l; i++)
    {
        if (re.test(all[i].className))
            matchArray.push(all[i]);
    }
    return matchArray;
}
于 2011-07-25T14:23:52.377 に答える
0

プロジェクトでフレームワーク (jQuery、YUI など) を使用していない場合は、少なくとも任意のブラウザーに CSS3 セレクター機能を追加するSizzle ライブラリを含めることで、生産性を向上させてください。非常に軽量で高速です。これにより、次のことが可能になります。

var childNodesToRemove = Sizzle(".foo");
于 2011-07-25T15:00:00.023 に答える
0

そのような方法があるかどうかを確認してください - getElementsByClassNamequerySelectorAllそうでない場合は、メソッドがサポートされているかどうかを確認してください。繰り返しになりますが、そうでない場合は、フレームワークを使用してノードを取得する方がよいでしょう。特に、このコードはクロスブラウザーであることを意図しています。

于 2011-07-25T14:04:13.360 に答える