2012-02-23 104 views
1

嘿,大家需要一點幫助, 我使用addROW函數向表中添加新行,但我想更改每個新的html元素的名稱行。 代碼無法通過JAVASCRIPT更改新行的html元素的名稱

function addRow(tableID) { 

      var table = document.getElementById(tableID); 

      var rowCount = table.rows.length; 
      var row = table.insertRow(rowCount); 

      var colCount = table.rows[0].cells.length; 

      for(var i=0; i<colCount; i++) { 

       var newcell = row.insertCell(i); 

       newcell.innerHTML = table.rows[0].cells[i].innerHTML; 
       //alert(newcell.childNodes); 
       switch(newcell.childNodes[0].type) { 
        case "text": 
          newcell.childNodes[0].value = ""; 
          newcell.childNodes[0].name = "newratings" //this doesnt work 

          break; 
        case "a": 
          newcell.childNodes[0].value = "Delete Course"; 
          break; 
        case "select-one": 
          newcell.childNodes[0].selectedIndex = 0; 
          newcell.childNodes[0].name = "newcourses" //this doesnt work 
          break; 
       } 
      } 
     } 
+0

您是否收到任何錯誤?此功能後會發生什麼? – sgowd 2012-02-23 09:31:55

+0

該功能完美的工作,但當我檢查新的HTML元素的名稱,他們仍然是相同的 – 2012-02-23 09:33:13

+1

它會進入案件?你有沒有警覺? – sgowd 2012-02-23 09:38:45

回答

2

您是否考慮過使用setAttribute函數。試試這個:

.....childNodes[0].setAttribute("name", "yourName"); 

它可能需要更多的一些搜索你的一部分,使之成爲你的榜樣,但它的一個開始工作。

要注意的一件事是,子節點將返回所有子節點可能性的集合,這可能是標記,文本節點或註釋,所以更好的選擇是使用getElementsByTagName()來代替。

+0

setAttribute選項似乎也沒有工作我試過這種情況下的「文本」: newcell.childNodes [0] .value =「」; newcell.childNodes [0] .setAttribute('name','newrating'); 休息; – 2012-02-23 10:24:25

+0

如果有幫助,setAttribute中的參數應該用雙引號引起來?你能提醒你在那個位置已經有了什麼元素名稱嗎?如果您打印出您的孩子節點中有哪些選項,那麼您可以查看哪些可以更改。 – CSharpened 2012-02-23 10:38:31

+0

你可以試試這個。 var elementVar = newcell.childNodes [0] .getElementsById(「td」)[0]; elementVar.setAttribute(「name」,「yourName」); – CSharpened 2012-02-23 10:40:21

0

看看我已添加到此答案的示例。我認爲這是設置文本元素的名稱。

JsFiddle

+0

這將行設置相同的名字在每個單元的名稱,我打算將它們設置不同 – 2012-02-23 11:08:17

相關問題