javascript - 如何在不弄乱唯一 ID 的情况下克隆输入字段?
问题描述
我有一个输入表单,附有一个更改其子属性的元素。碰巧我需要这个元素与它的输入表单一起被复制/克隆。我正在使用复制此元素element.cloneNode(true)
这不起作用,因为输入是具有唯一 ID 的单选按钮等。有没有办法让标签和输入字段在能够克隆它们的同时完全正常工作?使用 vanilla javascript 将是最佳选择,但任何建议都会有所帮助,谢谢。
解决方案
您可以在每个标签/ID 上添加一个增量编号。
这是一个例子:
const container = document.querySelector('.clone-container')
container.querySelectorAll('.clone-me').forEach((item, index) => {
// Clone it
let cloned = item.cloneNode(true)
// Add an increment number to label and input (so it's unique)
cloned.querySelector('label').setAttribute('for', `anything${index}`)
cloned.querySelector('input').setAttribute('id', `anything${index}`)
// Append
container.append(cloned)
})
<div class="clone-container">
<div class="clone-me">
<label for="option1">Option 1</label>
<input type="radio" id="option1" name="options">
</div>
<div class="clone-me">
<label for="option2">Option 2</label>
<input type="radio" id="option2" name="options">
</div>
</div>
推荐阅读
- arangodb - Arango commitIntervalMsec 和solidationIntervalMsec 以减少等待时间
- java - mongoTemplate executeCommand 错误:未授权
- c# - 设置可以注入的填充对象的最佳方法是什么?
- apache-flink - Flink 流式传输:全局窗口何时开始?
- java - Firebase Cloud Storage Java Admin SDK 使用 contentType 上传文件
- oauth-2.0 - 如何在金字塔框架中启用谷歌身份验证?
- vuejs3 - Vue3 将 html 添加到现有项目
- javascript - jest-each 是否提供了一种方法来更多地访问测试描述中传递的参数?
- pine-script - 在 pine 脚本中低于/高于柱的低/高填充顺序
- android - 提供的身份验证凭证格式错误或已过期 Flutter