1

私は次のようなJavascriptを持っています:

function addRow(table1) {

            var table = document.getElementById(table1);

            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 = "";
                            break;
                }
            }
        }

そして次のようなHTML:

<input type="button" value="Insert row" onclick="addRow('table1')" />
<table id="table1" border=1>
    <tr>
        <td rowspan=2><input type="text" name="txt1"></td>
        <td><input type="text" name="txt2"></td>
    </tr>
    <tr>
        <td><input type="text" name="txt3"></td>
    </tr>
</table>

、のある行とrowspan=2、行スパンのない2つの行があります。ユーザーが[行の挿入]ボタンをクリックすると、3つのテキストボックスが新しい行に追加されるように、次の行を作成するにはどうすればよいですか?

newcell.innerHTML = table.rows[0].cells.innerHTML;
4

1 に答える 1

2

コードには次のものがあることに注意してください。

> newcell.innerHTML = table.rows[0].cells.innerHTML;

私はあなたが意味すると思います:

newcell.innerHTML = table.rows[0].cells[i].innerHTML;

しかしとにかく、代わりに複製された行を使用することを検討しましたか?例:次のようなもの(テストされていない):

function addRow(tableID) {
  var table = document.getElementById(tableID);
  var row = table.rows[0].cloneNode(true);
  var inputs = row.getElementsByTagName('input');
  var i = inputs.length;

  while (i--) {

    if (inputs[i].type = 'text') {
      inputs[i].vaule = '';

      // Might want to change other properties too
    }
  }
  table.tBodies[0].appendChild(row);
}
于 2013-01-21T02:33:33.607 に答える