如何在javascript中克隆DOM SVG元素?

如何在javascript中克隆DOM SVG元素?,javascript,arrays,dynamic,copy,htmlcollection,Javascript,Arrays,Dynamic,Copy,Htmlcollection,我想在一个数组中存储多个HTMLCollection,但我不希望它们是动态的 var history = []; var mysvg = document.getElementsByTagName("svg")[0]; this.saveToHistory = function(){ history.push(mysvg); } 现在,在我的数组history中,mysvg是一个动态的HTMLcollection历史记录[0]将与历史记录[1]相同,即使我调用saveToHistory(

我想在一个数组中存储多个HTMLCollection,但我不希望它们是动态的

var history = [];
var mysvg = document.getElementsByTagName("svg")[0];

this.saveToHistory = function(){
  history.push(mysvg);
}
现在,在我的数组
history
中,
mysvg
是一个动态的HTMLcollection<代码>历史记录[0]将与
历史记录[1]
相同,即使我调用
saveToHistory()
时,历史记录[0]
历史记录[1]


我认为在将mysvg推入历史之前复制它是解决这个问题的方法。。。但是我该怎么做呢?

这有点不清楚,问题是
getElementsByTagName
返回一个活动节点列表,如果是这样,请使用
querySelector
。解释为什么
history[0]
history[1]
等相同?@adeneo我正在画布中绘制SVG。每次绘制SVG时,我都调用
saveToHistory()
。因为mysvg是动态的,
history[0]
history[1]
相同,但我不希望它们是
querySelector
并不能解决问题。所以您只是保存canvas元素,并认为您将在该时间点获得画布中绘制的任何内容?是的,因为当我存储innerHTML而不是HTMLcollection时,我可以看到innerHTML是静态的,并且显示了我想要的内容@确实是这样,但您不能合理地期望只存储canvas DOM节点,并在任何时间点获取其内容,实际上您必须为此获取HTML。