使用Javascript插入新行(rowspan)

时间:2013-01-21 01:59:38

标签: javascript html row html-table

我有以下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,两行没有行。如何编写以下行,以便用户单击“插入行”按钮后,将在新行中添加三个文本框?

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

1 个答案:

答案 0 :(得分: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);
}