【问题标题】:Insert new row (rowspan) with Javascript使用 Javascript 插入新行(rowspan)
【发布时间】:2013-01-04 02:07:27
【问题描述】:

我有如下的 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;

【问题讨论】:

  • @JosephSilber 看到这个成员是新成员,我认为这是代码如何粘贴到问题中的问题 - 有时会出现乱码。因此,我认为没有必要发表如此聪明的言论,尤其是当他只是想寻求帮助时。
  • @AustinBrunkhorst - OP 有 2 个答案和 5 个问题。是时候毕业了。
  • 无论在什么情况下,做一个聪明人都无助于建设一个富有成效的社区。​​span>

标签: javascript html row html-table


【解决方案1】:

请注意,您的代码中有:

> 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);
}

【讨论】:

  • 感谢您的提醒,以前从未想过cloneNode()。但它只会克隆第一行..
  • @LorekBryanson——你可以克隆任何你想要的节点(及其后代),我只使用了第一行,因为那是你放在 OP 中的。
猜你喜欢
  • 2016-03-09
  • 1970-01-01
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 2015-12-20
相关资源
最近更新 更多