可以在JavaScript中克隆html元素对象吗?

可以在JavaScript中克隆html元素对象吗?,javascript,jquery,Javascript,Jquery,我在表中有一个html元素(如选择框输入字段)。现在我想复制这个对象并从中生成一个新的对象,然后使用JavaScript或jQuery。我认为这应该会起作用,但我现在有点不知所措 类似这样的代码(伪代码): 使用代码,您可以在纯JavaScript中使用以下方法执行类似操作: 或者使用jQuery方法(不是最有效的): 在jQuery中实际上非常简单: $("#ddl_1").clone().attr("id",newId).appendTo("body"); Change.appendTo(

我在表中有一个html元素(如选择框输入字段)。现在我想复制这个对象并从中生成一个新的对象,然后使用JavaScript或jQuery。我认为这应该会起作用,但我现在有点不知所措

类似这样的代码(伪代码):


使用代码,您可以在纯JavaScript中使用以下方法执行类似操作:

或者使用jQuery方法(不是最有效的):


在jQuery中实际上非常简单:

$("#ddl_1").clone().attr("id",newId).appendTo("body");
Change.appendTo()当然…

在一行中:

$('#selector').clone().attr('id','newid').appendTo('#newPlace');

使用本机JavaScript:

newelement = element.cloneNode(bool)
其中,布尔值指示是否克隆子节点


是的,您可以复制一个元素的子元素并将其粘贴到另一个元素中:

var foo1 = jQuery('#foo1');
var foo2 = jQuery('#foo2');

foo1.html(foo2.children().clone());
证明:

试试这个:

$('#foo1').html($('#foo2').children().clone());
您需要选择“#foo2”作为选择器。然后,使用html()获取它

以下是html:

<div id="foo1">

</div>
<div id="foo2">
    <div>Foo Here</div>
</div>​
以下是JSFIDLE:

您可以使用clone()方法创建副本

$('#foo1').html( $('#foo2 > div').clone())​;

使用
.innerHTML
获取要克隆的元素的HTML,然后通过
createElement()
创建一个新对象

var html = document.getElementById('test').innerHTML;
var clone = document.createElement('span');
clone.innerHTML = html;
通常,clone()函数必须由克隆人编码或理解。例如,让我们克隆这个:
Hello,name。如果我删除克隆的
标记,它是否也应该删除原始的span标记?如果两者都被删除,则对象引用被克隆;如果只删除一个集合,则对象引用是全新的实例化。在某些情况下,你想要一个,在另一些情况下,你想要另一个

通常,在HTML中,您希望克隆的任何内容都是引用自包含的。确保正确包含这些新引用的最佳方法是在新元素中重新运行相同的innerHTML并被浏览器重新理解。比起努力解决你的问题,你应该确切地知道它是如何克隆的

完整工作演示:

函数cloneElement(){
var html=document.getElementById('test').innerHTML;
var clone=document.createElement('span');
clone.innerHTML=html;
document.getElementById('clone').appendChild(clone);
}
你好




我认为这不会有什么帮助,因为您的属性值是一个不会改变的字符串。有一系列相关问题。克隆元素时修改ID非常重要。最佳答案。不要在不需要jquery的地方使用它。看起来不错。。。但到今天为止,浏览器的兼容性还是有问题的。@AniketSuryavanshi我不确定2月4日的具体情况,但ID和名称将被复制。ID需要更改,如果需要重复的名称,名称可以保持原样。很遗憾,您丢失了所有属性:/ID重复将是您的方法的一个问题
<div id="foo1">

</div>
<div id="foo2">
    <div>Foo Here</div>
</div>​
$("#foo2").click(function() {
    //alert("clicked");
    var value=$(this).html();
    $("#foo1").html(value);
});​
$('#foo1').html( $('#foo2 > div').clone())​;
var html = document.getElementById('test').innerHTML;
var clone = document.createElement('span');
clone.innerHTML = html;