【问题标题】:JavaScript cloneNode: SELECT keeping some undesirable bindingJavaScript cloneNode:SELECT 保留一些不需要的绑定
【发布时间】:2017-03-08 11:05:05
【问题描述】:

所以,我有一个包含输入元素的简单表格,我需要向其中动态添加新行。

其中一个单元格包含一个 SELECT 元素和一个使用 cloneNode() 复制的 OPTIONS 列表。

问题是:当我更改任何复制的 SELECT 元素时,原始 SELECT 的索引也会更改为相同的值,就像克隆过程留下了某种“绑定”一样。

我的桌子看起来像这样:

<table>
    <tr>
        <th>Header</th>
    </tr>
    <tr>
        <td>
            <select>
                <option>Options</option>
            </select>
        </td>
    </tr>
</table>

克隆例程相对复杂,因为我必须更改单元格 ID、元素名称和其他内容,但归结为以下内容:

var table = document.querySelector('#table');
var rows = table.querySelectorAll('tr');

for (var x = 0; x < 5; x++)
{

    row = rows[1].cloneNode(true);

    // Changes everything that needs to be changed

    table.appendChild(row);

}

有谁知道是什么原因导致原始 SELECT 被“绑定”到复制的?

提前致谢!

【问题讨论】:

  • 如何更新值?
  • 问题可能不在于克隆操作,而在于您更新索引的方式
  • @TrinhHoangNhu:没有“可能”,cloneNode() 没有链接任何东西;)

标签: javascript html dom clonenode


【解决方案1】:

感谢所有cmets!结果证明是一个简单的错误:我通过 addEventListener() 添加了一个事件到节点,该事件正在触发并将原始 SELECT 更新到复制的相同索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 2011-09-13
    • 2014-01-20
    相关资源
    最近更新 更多