添加表格行后如何更改选择ID的名称?

时间:2016-05-30 18:37:44

标签: javascript html insert cells

在表中我有两个选择,两个都从数据库中获取值。 当按添加按钮添加新行时,我想更改选择ID的名称 facility2, currency2 facility3, currency3 等等。但我不知道如何改变它们。

这是我创建的表格:

<table id="tableInformation">
  <tr>
    <td><label>No</label></td>
    <td><label>Facility</label></td>
    <td><label>Currency</label></td>
    <td></td>
  </tr>
  <tbody>
  <tr>
    <td><label>1</label></td>
    <td><div id="facility">
        <select id="facility1" name="facility">
          <option value=""></option>
          <option value="AL">AL</option>
          <option value="BL">BL</option>
          <option value="CL">CL</option>
        </select>
     </td>
     <td><div id="currency">
        <select id="currency1" name="currency">
          <option value=""></option>
          <option value="idr">IDR</option>
          <option value="usd">USD</option>
          <option value="aud">AUD</option>
          <option value="jpy">JPY</option>
        </select>
     </td>
     <td><input type="button" id="btnAddRows" value=" + "
          onclick=\'addRows()\' />
  </tr>
  </tbody>
 </table>

这是javascript:

function addRows() {
    var table = document.getElementById('tableInformation');
    var rowCount = table.rows.length;
    var iteration = rowCount -1;
    var numbers = iteration +1;
    var row = table.insertRow(rowCount);
    var colCount = table.rows[0].cells.length;

    // Cell for number
    var cell = row.insertCell(0);
    var label = document.createElement('label');
    label.textContent = numbers;
    cell.appendChild(label);

    for(var i=1; i<colCount; i++) {

        var newcell = row.insertCell(i);
        newcell.innerHTML = table.rows[1].cells[i].innerHTML;
        //alert(table.rows[1].cells[i].innerHTML);
        //alert(newcell.childNodes);

    }

}

提前致谢。

1 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点。这是你已经拥有的一小部分。

添加:

.replace(/id="(.+)1"/, 'id="$1' + rowCount + '"')

...为:

table.rows[1].cells[i].innerHTML

说明:您将HTML从第一行的每个单元格复制到新行。单元对象上的innerHTML属性是一个字符串。因此,在将字符串应用于新单元格之前,请使用字符串replace函数来修改该字符串。

此处应用的replace函数使用变量idrowCount属性值中的数字1替换为新行号的数字。

replace函数模式(第一个参数)查找正则表达式模式:/id="(.+)1"/

  • id="
  • 开头的字符串
  • 然后捕获一个或多个任何类型的字符(.+)
  • 数字1后跟引用1"

...例如id="currency1"

替换(第二个参数)中的$1 提供在第一组括号中捕获的文本的值,在本例中为(.+)

(此处未使用但$2将捕获第二组,$3将捕获第三组,等等。如果括号嵌套,则在括号内捕获外括号。)

以下是生成的for块:

for(var i=1; i<colCount; i++) {
  var newcell = row.insertCell(i);
  newcell.innerHTML = table.rows[1].cells[i].innerHTML.replace(/id="(.+)1"/, 'id="$1' + rowCount + '"');
}

JSFiddle example.