Я создал диаграмму dut dut. Вот мой код:
var width = 480;
var height = 480;
var radius = Math.min(width, height) / 2;
var doughnutWidth = 30;
var color = d3.scale.category10();
var arc = d3.svg.arc()
.outerRadius(radius - 10)
.innerRadius(radius - 70);
var pie = d3.layout.pie()
.sort(null)
.value(function(d) { return d[1]; });
var dataset = settings.dataset;
console.log(dataset);
var svg = d3.select("body")
.append("svg")
.attr("width", width)
.attr("height", height)
.append("g")
.attr("transform", "translate(" + width / 2 + "," + height / 2 + ")");
var path = svg.selectAll('path')
.data(pie(dataset))
.enter()
.append('path')
.attr('d', arc)
.attr('fill', function(d, i) {
return color(d.data[0]);
})
У меня есть простая форма на моей веб-странице, которая отображает выпадающее меню с несколькими параметрами. Каждый раз, когда пользователь меняет значение в форме, новый набор данных отправляется на мой script (settings.dataset), и пончик перерисовывается на странице.
Проблема в том, что некоторые из значений предыдущего набора данных остаются в DOM. На приведенном ниже примере консоли вы можете видеть, что второй набор данных имеет только два элемента. Третий - из предыдущего набора данных. Это испортит график, поскольку он отображает значение, которого не должно быть.
Мой вопрос: как очистить старые значения? Я прочитал .exit()
и .remove()
, но я не могу обойти эти методы.