2013-02-12 25 views
1

我試圖在onload期間更改兩個元素的類名稱。在IE 7,8和Chrome中沒有更改類名稱

這裏是我的同一代碼:

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

ELSE塊拍攝代碼的護理如果它不是IE,Mozilla中,這是工作的罰款,類名是越來越設置。

它在IE7和IE8

鉻不工作,如果我再重新加載頁面才起作用。

任何幫助將不勝感激。

回答

1

老版本的IE中執行setAttribute時存在一個bug。在較新版本的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"; 
+0

我使用正確的文檔類型,如果你看一下,我所提供的代碼,你也會看到,我使用foo.className =值:

在你的問題中的代碼應該被改寫;在ie檢測塊中。 – 2013-02-12 13:51:54

+0

ok lemme嘗試一下,會在一秒鐘內回覆你。 – 2013-02-12 13:53:16

+0

我試過了,mozilla沒有問題,但IE 7,8和chrome不起作用。所以我回到了原點。 – 2013-02-12 13:57:12