2013-10-04 38 views
1

我有一個表中動態添加的行。這些行包含日期選取器和下拉菜單中,我能夠設置類名的,但不使用.className的日期選擇和下拉().className()似乎不工作

var table = document.getElementById(tableID); 
var rowCount = table.rows.length; 
var row = table.insertRow(rowCount); 
row.className = "row1 part"; 

var cell1 = row.insertCell(0); 
cell1.className = "value"; 
var element1 = document.createElement("input"); 
element1.type = "text"; 
element1.name = "txtbox[]"; 
element1.className = "date-pick"; // this fails 
element1.setAttribute('value', '2013/10/04'); 
cell1.appendChild(element1); 

var cell2 = row.insertCell(1); 
var element2 = document.createElement("select"); 
element2.name = "prddrop[]"; 
element2.id = "prddrop[]"; 
element2.className = "bankopt"; //this also fails 
element2.options[element2.length] = new Option("[-- Please Choose --]", "[-- Please Choose --]"); 
var arr_items = [{ 
    "IssuingBank": " --- " 
}, { 
    "IssuingBank": " --- " 
}]; 
$(document).ready(function() { 
    for (var i = 0; i < arr_items.length; i++) { 
     element2.options[element2.length] = new Option(arr_items[i].IssuingBank, arr_items[i].IssuingBank); 
    } 
}); 
cell2.appendChild(element2); 

請幫我這個...謝謝!

+0

那麼,怎麼了?設置'className'屬性爲我工作。 –

+0

className()不是一個方法 –

+1

在這裏工作得很好.. [fiddle](http://jsfiddle.net/uTcUM/)..控制檯中是否有任何錯誤? –

回答

1

請記住,.appendChild()返回元素。

所以,你可以這樣做:

cell1.appendChild(element1).className = "class_to_add"; 

另一種方式:

您可以使用setAttribute(注意:這將不能在IE8和更早版本的工作中發表的意見@om說。 )

var i = document.createElement('input'); 
i.setAttribute('class', 'myclass'); 
document.forms[0].appendChild(i); 
+0

我可以分配'className '不在DOM中的元素。這個瀏覽器是否特定? –

+0

也許瀏覽器具體,我試過它在IE7上,不工作。 –

+0

那是IE7,這是一個特例。幾乎沒有像「你不能這樣做」的說法。 –

0

這應該適合你。跨所有瀏覽器。

var yourClass = document.createAttribute("class"); 
yourClass.value = "date-pick"; 
element1.setAttributeNode(yourClass);