3

我使用这个函数在表中创建一个新行

   function addRow(obj) 
    {
            var table = document.getElementById("table2");
            var rowCount = table.rows.length-1;
            var row = table.insertRow(rowCount);
            var nowrownum = table.rows.length-1;        
            var colCount = table.rows[2].cells.length;
            for(var i=0; i<colCount; i++) {
                var newcell = row.insertCell(i);
                newcell.innerHTML = table.rows[2].cells[i].innerHTML;
                newcell.style.cssText = table.rows[2].cells[i].style.cssText;

//Here is problem
                newcell.childNodes[0].setAttribute("name",table.rows[2].cells[i].childNodes[0].getAttribute("name")+nowrownum);
//End here                 
                newcell.childNodes[0].id    = table.rows[2].cells[i].childNodes[0].id+nowrownum;
                switch(newcell.childNodes[0].type)  
                {
                    case "text":
                            newcell.childNodes[0].value = "";
                            break;
                }
            }
            obj.style.visibility = "hidden"; //to hide current button
    }

这是我的html代码

  <form name=form id=form  method=POST target="frametemp">
    <table name ="table2" id="table2" border="1"  align="Center">
     <tr>
         <th>Head1</th>
         <th>Head2</th>
         <th>Head3</th>
         <th>Head4</th>
     </tr>
     <tr>
         <td>xxxxx</td>
         <td><input type="text" id="edit_0"   name="edit_0" ></td>
         <td>yyyy</td>
         <td><input id="add_bt_0" onclick="JavaScript : addRow(this);" name="add_bt_0" value="addrow" type="button" ></td>
     </tr>

添加行后,我从 ie 开发人员工具中检查页面

<td><input type="text" id="edit_1"   name="edit_0" submitName="edit_1" ></td>
<td><input id="add_bt_1" onclick="JavaScript : addRow(this);" name="add_bt_0" submitName="add_bt_1" value="addrow" type="button" ></td>

name 属性不会改变,但它会创建 submitName。

我怎样才能更改名称属性。我的目标浏览器是 IE 7++(现在我使用 ie 9)

4

2 回答 2

1

你如何改变id ..?? 使用相同的代码更改属性名称..我的意思是

newcell.childNodes[0].name = table.rows[2].cells[i].childNodes[0].name + nowrownum;
于 2013-03-22T05:05:32.100 回答
1

他们在 IE8 中修复了这个问题。在以前的版本中,您需要在调用 createElement 时包含名称。来自 MSDN:

Internet Explorer 8 和更高版本可以在运行时对使用 IHTMLDocument2::createElement 方法动态创建的元素设置 NAME 属性。要在 Internet Explorer 的早期版本中创建具有 NAME 属性的元素,请在使用 IHTMLDocument2::createElement 方法时包含该属性及其值。

这是来自 MSDN 的示例:

var newRadioButton = document.createElement("<INPUT TYPE='RADIO' NAME='RADIOTEST'VALUE='First Choice'>")
于 2013-03-22T05:59:49.563 回答