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>

行が追加された後、開発者ツールからページを確認します

<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 に答える