1

オンロード中に 2 つの要素のクラス名を変更しようとしています。

これが私のコードです:

    var browserName=navigator.appName;
    var tfElem = document.getElementById("TTlExpct");
    var blTfElem = document.getElementById("BTLExpct");
    if (browserName=="Microsoft Internet Explorer")
    {
        tfElem.className ="pn-tf";
        blTfElem.className ="pn-tf active";
        }
    else
    {
        tfElem.setAttribute('class', 'pn-tf');
        blTfElem.setAttribute('class', 'pn-tf active');
        }

IE でない場合は、else ブロックがコードを処理します。mozilla では、これは正常に機能しており、クラス名が設定されています。

IE7およびIE8では機能しません

クロムでは、ページを再度リロードした場合にのみ機能します。

どんな助けでも大歓迎です。

4

1 に答える 1

1

setAttribute古いバージョンの IE では、実装にバグがあります。新しいバージョンの IE では、標準モードをトリガーする Doctype を使用しないと、そのバグがエミュレートされる可能性があります。

交換:

foo.setAttribute('class', value);

と:

foo.className = value;

どこでもこれを行います。ブラウザの検出を試みないでください。setAttribute('class', value)をサポートするすべてのブラウザは、foo.className = value.

質問のコードは次のように書き換える必要があります。

var tfElem = document.getElementById("TTlExpct");
var blTfElem = document.getElementById("BTLExpct");
tfElem.className ="pn-tf";
blTfElem.className ="pn-tf active";
于 2013-02-12T13:50:27.777 に答える