1
我正在使用数组切片来翻阅数据。当我到达最后一页(只有7个元素而不是10个)时,我无法删除最后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”)'放在其他元素的后面。这里有一个更新的jsfiddle,如果你可以帮忙:http://jsfiddle.net/PMEaT/7/谢谢 –
当然,我在1分钟后就知道了。如果有人感兴趣,这里是jsfiddle:http://jsfiddle.net/PMEaT/8/ –