克隆一个div并生成ID';是的';使用javascript将子对象设置为唯一的

克隆一个div并生成ID';是的';使用javascript将子对象设置为唯一的,javascript,Javascript,我需要克隆一个div,克隆后div中的所有元素都应该有唯一的id。我只需要使用javascript,而不需要使用jquery 有人能帮我吗。下面的代码克隆一个元素,使用递归函数将随机id分配给克隆的元素及其子元素,并将其附加到文档体。适应你的需要。另见 var someClone=someDiv.clone(true),children=someClone.childNodes; someClone.id=Math.floor(1000+Math.random()*10000).toString

我需要克隆一个div,克隆后div中的所有元素都应该有唯一的id。我只需要使用javascript,而不需要使用jquery


有人能帮我吗。

下面的代码克隆一个元素,使用递归函数将随机id分配给克隆的元素及其子元素,并将其附加到文档体。适应你的需要。另见

var someClone=someDiv.clone(true),children=someClone.childNodes;
someClone.id=Math.floor(1000+Math.random()*10000).toString(16);
里德(儿童);
功能reId(节点){

对于(var i=0;idupplicate:@beeglebug:这是一个jquery孤岛。只是出于好奇:为什么jquery没有选项?您想了解如何使用vanilla js(这是一个合理的理由)实现它吗或者包含jQuery太难了?我的页面上的jQuery libarsry存在冲突,我的时间不多了,因此无法调查jQuery库未加载的原因。嘿,KooiInc,非常感谢。这是一个很大的帮助。它对我很有效。嘿,KooiInc,nodes[i]。函数reId(nodes)中的id在IE8上抛出以下错误:消息:对象不支持此属性或方法"在firefox上,一切正常。两件事:使用
cloneNode
并检查
nodeType
。查看更新的JSFIDLE@我的意思是随机生成的ID可以生成两个ID,这两个ID的发生方式是一样的。我链接的JSFIDLE会生成一个带有两个ID的正方形由(JS)
Math.random
方法生成的随机数对中有一百万个点。如果
Math.random
有很大的机会生成相同的结果,那么结果的平方中应该会出现一个模式。但是,是的,总有一个机会。如果你不信任它,你可以建立一个检查。
var someClone = someDiv.clone(true), children = someClone.childNodes;
someClone.id = Math.floor(1000+Math.random()*10000).toString(16);
reId(children);

function reId(nodes){
 for (var i=0;i<nodes.length;(i+=1)){
   var children = nodes[i].childNodes;
   nodes[i].id = Math.floor( 1001+Math.random()*10000 ).toString(16);
   if (children.length){
       reId(children);
   }
 }
}     

document.body.appendChild(someClone);