如何删除或replaceSVG内容?
我有一段JavaScript代码,它创build(使用D3.js)包含图表的svg
元素。 我想根据来自使用AJAX的Web服务的新数据更新图表,问题是每次点击更新button时,它会生成一个新的svg
,所以我想删除旧的或更新其内容。
这里是我创buildsvg
的JavaScript函数的一个片段:
var svg = d3.select("body") .append("svg") .attr("width", w) .attr("height", h);
如何删除旧的svg
元素或至lessreplace其内容?
这是解决scheme:
d3.select("svg").remove();
这是D3.js提供的remove
function
如果你想摆脱所有的孩子,
svg.selectAll("*").remove();
将删除与svg相关的所有内容。
在添加svg元素的时候设置id属性也可以让d3在id元素的后面selectremove()
var svg = d3.select("theParentElement").append("svg") .attr("id","the_SVG_ID") .attr("width",... ... d3.select("#the_SVG_ID").remove();
我有两个图表。
<div id="barChart"></div> <div id="bubbleChart"></div>
这删除了所有的图表。
d3.select("svg").remove();
这工作是删除现有的条形图,但后来我不能重新添加条形图
d3.select("#barChart").remove();
试了这个。 它不但让我删除现有的条形图,而且让我重新添加一个新的条形图。
d3.select("#barChart").select("svg").remove(); var svg = d3.select('#barChart') .append('svg') .attr('width', width + margins.left + margins.right) .attr('height', height + margins.top + margins.bottom) .append('g') .attr('transform', 'translate(' + margins.left + ',' + margins.top + ')');
不知道这是否是删除的正确方法,并在d3中重新添加图表。 它在Chrome中工作,但没有在IE中testing。
你也可以使用jQuery去除包含你的svg的div的内容。
$("#container_div_id").html("");
我正在使用D3.js使用SVG,而且我遇到了同样的问题。
我用这个代码去除了以前的svg,但是SVG中的线性渐变并没有进入IE
$( “#container_div_id”)HTML( “”)。
然后我写下面的代码来解决这个问题
$('container_div_id g').remove(); $('#container_div_id path').remove();
在这里,我将删除SVG中的前一个g和path,replace为新的。
在静态内容中保留我的线性渐变在SVG标签内,然后我调用上面的代码,这在IE中工作
你应该使用append("svg:svg")
,而不是append("svg")
以便D3使用正确的“命名空间”来使用xhtml。