Javascript-为什么不选择,并且textarea值更改在克隆时与输入元素一样得到更新?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript-为什么不选择,并且textarea值更改在克隆时与输入元素一样得到更新?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1184字,纯文字阅读大概需要2分钟。
内容图文
至少在Firefox中,当在动态或用户更改的textarea或select元素上使用cloneNode(true)时,不会保留value属性(也不更改DOM来反映动态更改),而对于input元素,则更改为value属性或由用户反映在DOM中(因此在调用cloneNode时将其保留).为什么会有这种区别?
更新:
>我想问:规范中是否规定了这种行为? (或在错误报告中详细说明?)
>样本位于:http://jsfiddle.net/9RSNt/1/
解决方法:
我怀疑这种差异的产生是因为textarea和selects的值由它们的节点内容确定.修改控件的值会修改其DOM属性,但不会修改其节点内容,因此,在克隆它们时,克隆具有原始元素的值.
您可以通过在change事件上更新其节点内容来解决此问题:
// textarea
$("textarea").change(function() { $(this).text($(this).val()); });
// select
$("select").change(function() {
var sel = $(this).children(":selected");
$(this.children).not(sel).removeAttr("selected");
sel.attr("selected", "selected");
});
编辑:
有很多Mozilla错误案例(有一些已解决,有一些没有),但实际规格的提及很少.似乎cloneNode()之后value属性的行为可能是灰色区域,规范中并未明确定义.毕竟,cloneNode()的目的是克隆DOM节点,而不必克隆其对象状态.
https://bugzilla.mozilla.org/show_bug.cgi?id=197294
https://bugzilla.mozilla.org/show_bug.cgi?id=230307
https://bugzilla.mozilla.org/show_bug.cgi?id=237783
内容总结
以上是互联网集市为您收集整理的Javascript-为什么不选择,并且textarea值更改在克隆时与输入元素一样得到更新?全部内容,希望文章能够帮你解决Javascript-为什么不选择,并且textarea值更改在克隆时与输入元素一样得到更新?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。