데이터를 페이지 분할하기 위해 배열 슬라이스를 사용하고 있습니다. 마지막 페이지 (10 개 대신 7 개의 요소 만 있음)에 도달하면 마지막 3 개의 막대를 제거 할 수 없습니다. .exit(). remove()는 페이지의 다른 요소에서 작동하지만 어떤 이유로 든 막대에서 작동하지 않습니다. 마지막 페이지에서 막대 8-10을 제거하려면 어떻게합니까? jsfiddle의 코드 여기 http://jsfiddle.net/PMEaT/1/배열 끝에 도달 할 때 여분의 데이터 포인트를 제거하십시오.
있어 : 여기서
가 jsfiddle에 예제 데이터 연산자는 데이터 - 조인 계산하지var data = [1,1,1,1,1,1,1,1,6,7,3,3,3,3,3,3,3];
var chart = d3.select("body").append("svg")
.attr("class","chart")
.attr("width",440)
.attr("height",300);
var barnumber = 10;
var page = 1;
var y = d3.scale.linear()
.domain([0,10])
.range([0,300])
var viewdata = data.slice((page-1)*barnumber,page*barnumber);
var rect = chart.selectAll("rect")
.data(viewdata);
rect.enter().insert("rect")
.attr("x",function(d,i){ return i*20})
.attr("y",function(d) {return 300 - y(d);})
.attr("width", 20)
.attr("height", y);
chart.selectAll("text")
.data(viewdata)
.enter().append("text")
.attr("x", function(d,i) { return i*20+8; })
.attr("y", 290)
.text(String);
$('#next').click(function() {
page++;
viewdata = data.slice((page-1)*barnumber,page*barnumber);
redraw();
});
$('#last').click(function() {
page--;
viewdata = data.slice((page-1)*barnumber,page*barnumber);
redraw();
});
function redraw() {
rect.data(viewdata)
.transition()
.duration(500)
.attr("x",function(d,i){ return i*20})
.attr("y",function(d) {return 300 - y(d);})
.attr("width", 20)
.attr("height", y);
chart.selectAll("text")
.data(viewdata)
.transition()
.duration(500)
.text(String);
rect.exit().remove();
}
감사합니다. 이것은 매우 도움이됩니다. 앞에서 언급했듯이 이전 버튼을 밀었을 때 10 개의 요소로 돌아가고 싶습니다. 다른 요소를 다시 가져 오는 방식으로'.enter.append ("rect")를 배치하는 데 어려움을 겪고 있습니다. http://sfiddle.net/PMEaT/7/ 감사합니다. –
물론 1 분 후에 알아 냈습니다. 다음은 관심있는 사람들을위한 jsfiddle입니다 : http://jsfiddle.net/PMEaT/8/ –