2012-02-23 100 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

相关问题