Javascript克隆节点未将所有值从克隆复制到新对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript克隆节点未将所有值从克隆复制到新对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2171字,纯文字阅读大概需要4分钟。
内容图文
<div class="container">
<select class="btn" name="item">
<option>Alpha</option>
<option>Beta</option>
<option>Gamma</option>
<option>Theta</option>
</select>
<input type="text" class="desc" name="desc">
</div>
在此示例中,默认情况下在“选择”下拉列表中选择的元素为“Alpha”.我想用值克隆整个节点.如果我在下拉列表中选择不同的值并在输入框中输入一些文本,然后克隆该节点,则只克隆文本框值.新对象中“选择”下拉列表的值仍为默认值(Alpha).
为什么“选择”与“输入”的克隆行为不同?
var parent = document.querySelector(".container");
var button = parent.querySelector(".btn");
var textbox = parent.querySelector(".desc");
> textbox.value
< "some random text"
> button.value
< "Gamma"
var cloned = parent.cloneNode(true);
var childButton = cloned.querySelector(".btn");
var childTextbox = cloned.querySelector(".desc");
> childTextbox.value
< "some random text"
> childButton.value
< "Alpha"
解决方法:
更改选择时,选择的状态将存储在浏览器中,克隆的节点将永远不会包含浏览器更改和/或存储的对象/元素的状态.
但是对于输入,它被存储为属性值的值并被克隆.
要克隆具有所选值的节点,
您应该检测更改事件并向其添加选定的属性.
也就是说,为select for change事件添加一个事件监听器.
然后在回调函数中,使用选择将所选属性设置为该对象
selectElement.options[selectElement.selectedIndex].setAttribute("selected","");
运行下面的代码段.
从列表中选择任何值,然后在文本框中键入内容并单击“克隆”按钮.
var parent = document.querySelector(".container");
var button = parent.querySelector(".btn");
var textbox = parent.querySelector(".desc");
console.log(button.value);
console.log(textbox.value);
function update(val){
val.options[val.selectedIndex].setAttribute("selected","");
}
function clone(){
var cloned = parent.cloneNode(true);
document.querySelector(".container-2").appendChild(cloned);
var childButton = cloned.querySelector(".btn");
var childTextbox = cloned.querySelector(".desc");
console.log(button.value);
console.log(textbox.value);
}
<div class="container">
<select class="btn" name="item" onchange="update(this);">
<option>Alpha</option>
<option>Beta</option>
<option>Gamma</option>
<option>Theta</option>
</select>
<input type="text" class="desc" name="desc">
</div>
<button onclick="clone();">Clone</button>
<div class="container-2"></div>
内容总结
以上是互联网集市为您收集整理的Javascript克隆节点未将所有值从克隆复制到新对象全部内容,希望文章能够帮你解决Javascript克隆节点未将所有值从克隆复制到新对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。