Javascript 在IE 7、8和chrome中未更改类名

Javascript 在IE 7、8和chrome中未更改类名,javascript,internet-explorer,cross-browser,Javascript,Internet Explorer,Cross Browser,我试图在onload期间更改两个元素的类名 以下是我的代码: var browserName=navigator.appName; var tfElem = document.getElementById("TTlExpct"); var blTfElem = document.getElementById("BTLExpct"); if (browserName=="Microsoft Internet Explorer") { tfEl

我试图在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中,只有在我重新加载页面时,它才起作用


任何帮助都将不胜感激。

旧版本IE中的
setAttribute
实现中存在错误。如果您不使用触发标准模式的Doctype,则在新版本IE中可能会模拟该错误

替换:

foo.setAttribute('class', 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";

在旧版本的IE中,
setAttribute
的实现中存在一个bug。在新版本的IE中,如果不使用触发标准模式的Doctype,则可能会模拟该bug

替换:

foo.setAttribute('class', 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";

我使用的是正确的文档类型,如果您查看我提供的代码,您将看到我使用的是foo.className=value;在ie检测模块中,我试过了,mozilla没有问题,但ie 7、8和chrome不能工作。所以我回到了原点。@thedarknight-在这种情况下,我打赌问题与您如何运行这段代码有关,或者与您如何测试是否添加了类有关。(即问题中未披露的内容)。可能,不确定同一段代码如何在MF中工作,并且在IE和chrome中是如此痛苦。好吧,我发现了问题,似乎是我为tfElem设置的类导致了问题。实际上,我只需要将它更改为一个空白类名,所有浏览器的一切都会就绪。感谢昆汀指出了显而易见的问题。我使用的是正确的文档类型,如果您查看我提供的代码,您将看到我使用的是foo.className=value;在ie检测模块中,我试过了,mozilla没有问题,但ie 7、8和chrome不能工作。所以我回到了原点。@thedarknight-在这种情况下,我打赌问题与您如何运行这段代码有关,或者与您如何测试是否添加了类有关。(即问题中未披露的内容)。可能,不确定同一段代码如何在MF中工作,并且在IE和chrome中是如此痛苦。好吧,我发现了问题,似乎是我为tfElem设置的类导致了问题。实际上,我只需要将它更改为一个空白类名,所有浏览器的一切都会就绪。感谢昆汀指出了显而易见的问题。投票通过并被接受。