2
다음 코드는 dataset2로 chart1을 업데이트하지만 mychart1 값은 dataset2의 새 값으로 업데이트되지 않습니다. myChart1에 dataset2의 업데이트 된 값을 반영하고 싶지만 디버거에서 assing 된 클래스를 보면 이전 데이터가 업데이트되고 있습니다.데이터 세트의 새 데이터가 업데이트되지 않습니다.
나는이 문제입니다 잘못된
function chart() {
//Width and height
var w = 200;
var h = 100;
var barPadding = 2;
var max = 0;
this.createChart = function(dataset,cls) {
//create svg element
var svg = d3.select("#chartDisplay").append("svg").attr("class",cls).attr(
"width", w).attr("height", h);
//create rect bars
var rect = svg.selectAll("rect").data(dataset,function(d, i) {return d;});
rect.enter()
.append("rect")
.attr("class","original")
.attr("x",function(d, i) {
return i * (w/dataset.length);
})
.attr("y", function(d) {
return h - d * 3; //Height minus data value
})
.attr("width", w/dataset.length - barPadding)
.attr("height", function(d) {
return d * 3;
});
max = d3.max(dataset);
var xScale = d3.scale.linear().domain([ 0, max ]).range(
[ 0, w ]);
}
this.updateChart = function(dataset,cls) {
var svg = d3.select("#chartDisplay").select("svg."+cls);
var rect = svg.selectAll('rect')
.data(dataset,function(d, i) {
return d;
});
rect.attr("y", function(d) {
return h - d * 3; //Height minus data value
})
.attr("height", function(d) {
return d * 3;
});
rect.attr("class","updated");
}
this.getMax = function() {
return max;
}
}
var dataset1 = [ 5, 10, 12, 19, 21, 25, 22, 18, 15, 13 ];
var dataset2 = [ 1, 4, 14, 19, 16, 30, 22, 18, 15, 13 ];
var myChart1 = new chart();
myChart1.createChart(dataset1,"chart1");
myChart1.updateChart(dataset2,"chart1");
var myChart2 = new chart();
myChart2.createChart(dataset2,"chart2");
답장을 보내 주셔서 감사합니다. 첫 번째 대답은 작동하지만 업데이트 된 rct 만 사용하여 색상을 변경하면 모든 rect가 클래스를 업데이트합니다. 이 문제가 발생하는 이유는 무엇입니까? – beeCoder