Javascript 有没有一种简单的方法可以清除SVG元素';什么内容?
在HTML中,我可以使用以下命令清除Javascript 有没有一种简单的方法可以清除SVG元素';什么内容?,javascript,xml,dom,svg,Javascript,Xml,Dom,Svg,在HTML中,我可以使用以下命令清除元素: div.innerHTML = ""; 如果我有一个元素,是否有一个等价物?我找不到innerHTML或innerXML甚至innerSVG方法 我知道SVG DOM是XML DOM的超集,所以我知道我可以这样做: while (svg.lastChild) { svg.removeChild(svg.lastChild); } 但这既单调又缓慢。有没有更快或更简单的方法来清除SVG元素?使用此方法 还有拉斐尔: 我很想仔细研究一下,看看他
元素:
div.innerHTML = "";
如果我有一个
元素,是否有一个等价物?我找不到innerHTML
或innerXML
甚至innerSVG
方法
我知道SVG DOM是XML DOM的超集,所以我知道我可以这样做:
while (svg.lastChild) {
svg.removeChild(svg.lastChild);
}
但这既单调又缓慢。有没有更快或更简单的方法来清除SVG元素?使用此方法
还有拉斐尔:
我很想仔细研究一下,看看他们在用
.destroy()
方法做什么。你已经给出了一个答案:你可以循环所有的孩子,然后把他们移除。如果您认为子节点太多,那么可能需要将svg节点替换为空节点。如果svg节点具有某些属性,则可以使用标记放置所有子节点,然后用空节点替换该节点
element = document.getElementById("elementID");
element.parentNode.removeChild(element);
我是从中得到这个想法的,如果您使用jQuery,您可以这样做
$("#svgid").empty();
这是svg的一部分,同时它的其他属性(如宽度和高度)保持不变。我尝试了
svg.text(“”)
,它似乎可以工作。清除所有内部文本,保留属性。使用d3.js。这将从svg中删除所有内容节点
svg.selectAll("*").remove();
您可以使用克隆并用克隆的元素替换该元素
var parentElement = svg.parentElement
var emptySvg = svg.cloneNode(false);
parentElement.removeChild(svg);
parentElement.appendChild(emptySvg);
这将在末尾附加svg,
您可能希望在之前获取元素并相应地追加我同意使用克隆并用克隆的元素替换该元素
var parentElement = svg.parentElement
var emptySvg = svg.cloneNode(false);
parentElement.removeChild(svg);
parentElement.appendChild(emptySvg);
只有一行代码:
svg.parentNode.replaceChild(svg.cloneNode(false), svg);
如果您想让svg的def保持在我的状态,请使用以下命令
功能清除(prnt){
let children=prnt.children;
对于(让i=0;我看起来就像他们在做Aseem一样:paperproto.clear=function(){var c=this.canvas;而(c.firstChild){c.removeChild(c.firstChild);}这将删除元素本身,而不仅仅是清空它,但确实对SVG有效。删除整个元素“有效”如何?这不是问题所在。这正是我想要的。删除标记:(在john ktejik的commnet上展开。使用empty()清除所有定义。使用循环仅清除与已删除的子元素特定关联的定义。必须在svg.html(null)上使用此选项
让它与IE 11一起工作。谢谢。请注意,svg
变量这里是一个d3选择,而不是问题中的SVGSVGElement对象。它可能是用d3.select(svg)修复的。selectAll(“*”).remove();
如果其中有现有的DEF怎么办?将您的DEF从该元素中删除。