Class Name not getting changed in IE 7, 8 and chrome

女生的网名这么多〃 提交于 2019-12-20 05:11:08

问题


I am trying to change class name of two elements during onload.

Here is my code for the same :

    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');
        }

The else block takes care of the code if its not IE, in mozilla, this is working fine, class name is getting set.

Its not working in IE7 and IE8

and

in chrome, it works only if i reload the page again.

Any help will be appreciated .


回答1:


There is a bug in the implementation of setAttribute in old versions of IE. In newer versions of IE that bug may be emulated if you do not use a Doctype that triggers standards mode.

Replace:

foo.setAttribute('class', value);

With:

foo.className = value;

Do this everywhere. Don't try to do browser detection. All browsers that support setAttribute('class', value) also support foo.className = value.

The code in your question should be rewritten as:

var tfElem = document.getElementById("TTlExpct");
var blTfElem = document.getElementById("BTLExpct");
tfElem.className ="pn-tf";
blTfElem.className ="pn-tf active";


来源:https://stackoverflow.com/questions/14834045/class-name-not-getting-changed-in-ie-7-8-and-chrome

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!