javascript - 为什么a的值
问题描述
解决方案
问题是,当您克隆一个节点时,您实际上是使用它的 HTML 标记并从该标记中创建一个新元素。选定<option>
对象的任何 HTML 属性都不会因被选定而更改,除非您明确地这样做(通过为选定对象<option>
提供一个selected
属性,并确保没有其他<option>
标签具有该属性)。
const origSelect = document.querySelector('select');
const options = [...origSelect.options];
origSelect.addEventListener('change', () => {
options.forEach(option => option.removeAttribute('selected'));
options[origSelect.selectedIndex].setAttribute('selected', '');
});
function cloneIt() {
let newFields = document.getElementById('clonedFields');
let cloneThis = document.getElementById('cloneThis');
let clonedNode = cloneThis.cloneNode(true);
clonedNode.querySelector('select').value = origSelect.value;
newFields.parentNode.appendChild(clonedNode);
}
<div id="cloneParent">
<div id="cloneThis">
<select id="cloneTestSelect">
<option value="Option1">Option1</option>
<option value="Option2">Option2</option>
<option value="Option3">Option3</option>
<option value="Option4">Option4</option>
</select>
<label for="cloneTestText">Text Input: </label>
<input type="text" id="cloneTestText">
<label for="cloneTestNumber">Number Input: </label>
<input type="text" id="cloneTestNum">
</div>
</div>
<br>
<h1>Cloned fields: </h1>
<br>
<div id="clonedFields"></div>
<button onclick="cloneIt()">Clone inputs</button>
虽然您可以这样做,但简单地检索 的当前值<select>
并将新的选择标签设置为原始选择的值会更容易:
const origSelect = document.querySelector('select');
function cloneIt() {
let newFields = document.getElementById('clonedFields');
let cloneThis = document.getElementById('cloneThis');
let clonedNode = cloneThis.cloneNode(true);
clonedNode.querySelector('select').value = origSelect.value;
newFields.parentNode.appendChild(clonedNode);
}
<div id="cloneParent">
<div id="cloneThis">
<select id="cloneTestSelect">
<option value="Option1">Option1</option>
<option value="Option2">Option2</option>
<option value="Option3">Option3</option>
<option value="Option4">Option4</option>
</select>
<label for="cloneTestText">Text Input: </label>
<input type="text" id="cloneTestText">
<label for="cloneTestNumber">Number Input: </label>
<input type="text" id="cloneTestNum">
</div>
</div>
<br>
<h1>Cloned fields: </h1>
<br>
<div id="clonedFields"></div>
<button onclick="cloneIt()">Clone inputs</button>
推荐阅读
- java - 如何有意搜索三星消息 (A21s)
- json - Angular 计算值未显示在 JSON 中且无法访问条件的问题
- winsql - 添加 +CHAR(13),+CHAR(10) 时,创建 txt 文件会创建一个额外的字段
- r - 使用 tidyverse 重定位行
- html - 错误 NullInjectorError: R3InjectorError(AppModule)[Number -> Number -> Number]: NullInjectorError: No provider for Number
- microchip - SAML21 重载定时器
- excel - 如何根据范围内的空白单元格行将单元格向下移动
- javascript - 如何在javascript中在m和n之间切片?
- indexing - ag-grid,使用自定义行ID时获取行ID序列
- java - Maven 友好 CI - 修订属性不适用于 Jenkins 构建