我有一个SVG地图和一个轮询数据变化的间隔,并相应地更新地图上的颜色.除非我使用过渡淡入新颜色,否则一切正常.然后标签慢慢占用越来越多的内存,直到它崩溃.
我做了一个显示相同行为的简化示例:
var size = 500;
var num = 25;
var boxSize = size / num;
function color(d) {
return '#' + Math.random().toString(16).slice(2,8);
}
var svg = d3.select('body')
.append("svg")
.attr("width", size)
.attr("height", size);
var squares = svg.selectAll(".square")
.data(d3.range(num * num))
.enter().append("rect")
.attr("class", "square")
.attr("width", boxSize)
.attr("height", boxSize)
.attr("x", function (d) { return boxSize * (d % num);})
.attr("y", function (d) { return boxSize * Math.floor(d / num); })
.style("fill", color);
function shuffleColors() {
squares.interrupt().transition().duration(500).style("fill", color);
timer = setTimeout(shuffleColors, 1000);
} …
Run Code Online (Sandbox Code Playgroud)