如何在javascript中克隆DOM SVG元素?
我想在一个数组中存储多个HTMLCollection,但我不希望它们是动态的如何在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(
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。