2011-11-02 87 views
-2

我設置dinamically產生的選擇控制與下面的代碼的className屬性:JavaScript的設置className屬性爲Internet Explorer

oField.className ="select"; 

它適用於Firefox的不是IE瀏覽器。我怎樣才能在IE上設置這個屬性?

的代碼:

var oField = document.createElement("select"); 
if(browser == "IE"){ 
    oField.size = 1; 
    oField.setAttribute("name","sele"+num); 
    oField.onChange = function(){ 
     AggiungiRiga(oField.name,oField.value) 
    }; 
} 
else{ 
    oField.setAttribute("size",1); 
    oField.setAttribute("name","sele"+num); 
    oField.setAttribute("onChange","AggiungiRiga(this.name,this.value)"); 
} 
oField.className ="select"; 

在這裏,我將其添加到文檔:

oTd1.appendChild(oField); 

oTd1<td>元件,其中選擇控制必須的地方)。我知道代碼質量不好,原因是遺留代碼。

+3

假設'oField'是一個HTMLElementNode,它應該在IE中工作得很好。你的問題可能在別處。 – Quentin

+0

oField只是一個變量。我設置了ID,名稱,值,className,然後將其添加到文檔中。 –

+2

顯示將「oField」設置爲某個值的代碼。 – Pointy

回答

-6

你爲什麼不嘗試用jQuery做到這一點:

$('#idElement').attr('class', 'classname'); 

或者只是使用javascript:

document.getElementById("idElement").setAttribute("class", "className"); 
+1

沒有理由使用「setAttribute()」來設置真實DOM元素的「className」屬性。 – Pointy

+2

'setAttribute'在IE的舊版本中被破壞(特別是如果你嘗試設置'class'屬性,那麼它將嘗試設置'class' *屬性*而不是'className'屬性,所以這是行不通的。 – Quentin

+4

如果我放棄了我一般不喜歡的「爲jquery運行最瑣碎的問題」的答案,那麼如果你*將*使用jQuery來旋轉類名,那麼它就有'addClass'和朋友,所以使用'attr'對於這項任務通常是一個糟糕的選擇。 – Quentin

0

我看不出有什麼appendChild()方法,你在哪裏追加select element

不附加oField到文檔可能會導致您的問題。

如:

document.body.appendChild(oField); 

而且哪裏有變量browsernum從申報?我猜如果它的工作在FF號是宣佈。

var oField = document.createElement("select"); 

oField.size = 1; 
oField.name = "sele" + num; 

oField.onChange = function(){AggiungiRiga(oField.name,oField.value)}; 

oField.className = "select"; 

document.getElementById('tabella').getElementsByTagName('TBODY')[0].childNodes[0].firstChild.appendChild(oField) 

你知道你會作出很容易我有一個idTD和它的工作,我會easer如果你有一個TD id=""任何方式,如果你想放置在首個TD的選擇上述

document.getElementById('tabella').getElementsByTagName('TBODY')[0].childNodes[0].firstChild.appendChild(oField) 

顯示這將做到這compleate例如但是你需要有表作爲緊湊

<table id="tabella"><tr><td></td></tr></table> 
+1

@AntonioF看着你的代碼,你不需要檢查是否(瀏覽器==「IE」),因爲只是追加onchange會好的,我更新我的答案 – david

+0

oTd1是​​附加到oTr的對象(一個對象)通過以下方式附加到表中: document.getElementById('tabella')。getElementsByTagName('TBODY')[0] .appendChild(oTr); –

相關問題