0

私のスクリプト

var cwidth   = document.getElementById('contentarea').clientWidth;
var elements = document.getElementsByClassName("shadow");

for(var i=0; i<elements.length; i++) {
   elements[i].style.width = cwidth+"px";
   var anc = elements[i].getElementsByTagName("a"); // not working in IE 7 & 8
   anc[0].style.width = cwidth+"px";
}

このスクリプトは、IE7および8を除くすべてのブラウザーで正常に機能します

誰か助けてください

4

2 に答える 2

2

getElementsByClassNameIE<9ではサポートされていません。

IE8では、次を使用できます。

var elements = document.querySelectorAll(".shadow");

ただし、これはで入手できるようなライブコレクションではないgetElementsByClassNameことに注意してください。また、複数のクラスを持つ要素を検索する場合は、を実行する必要がありますdocument.querySelectorAll(".first.second");

IE7に関しては、weelの既知のフレームワーク(jQueryやSizzleなど)や次のような関数など、他の何かに依存する必要があります。

var getElementsByClassName = (function(all) {
    return function (cls) {
        var a = [], i = 0;
        for (; i < all.length; i++)
            if ((" " + all[i].className + " ").indexOf(" " + cls + " ") !== -1)
                a.push(all[i]);
        return a;
    };
})(document.all);

これもライブコレクションではありません。さらに、複数のクラスを持つ要素を検索することはできません。つまり、彼らが彼らのclassName財産であなたが望むように注文されない限り、あなたはそれを信頼することはできません。あなたはもっと複雑なことをしなければならないでしょう、あなたがJavascriptでもっと経験を積むとき、私はあなたにそれを任せます。

于 2012-09-28T07:21:16.873 に答える
1

IE7および8には関数'getElementsByClassName'がありません。この関数は、jQueryのように独自に作成できます。

于 2012-09-28T07:20:52.183 に答える