1

我正在尝试在 onload 期间更改两个元素的类名。

这是我的相同代码:

    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

在 chrome 中,它只有在我重新加载页面时才有效。

任何帮助将不胜感激 。

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 回答