gpt4 book ai didi

javascript - 删除了不正确的 SVG 组

转载 作者:行者123 更新时间:2023-11-30 12:35:05 26 4
gpt4 key购买 nike

我想删除被点击的栏,但由于某种原因它总是删除最后一个栏。我想答案可能在下面的文章 ( http://pothibo.com/2013/09/d3-js-how-to-handle-dynamic-json-data/ ) 中,但我不确定是否有必要手动为每个元素分配一个键。我花了几个小时试图让它发挥作用,所以我希望有人能给我指明正确的方向。提前致谢。

<html>
<head>
<title>Interactive Div-based Bar Chart</title>
<style type="text/css">
.chart rect {
fill: teal;
}
.chart text {
fill: white;
font: 30px sans-serif;
text-anchor: end;
}
</style>
<script src="Scripts/d3.min.js"></script>
</head>
<body>
<div id="data-field"></div>
<button id="add-btn">Add Data</button>
<p>Click on a bar to remove it</p>

<script>
var barHeight = 75, margin = 3, padding = 3;

var chartData = [6,12,15,21,29,41];

var chart = d3.select("body").append("svg").attr("class","chart");

drawChart();

function drawChart() {

var selection = chart.selectAll("g")
.data(chartData);

// Remove extra bars
selection.exit()
.remove();

// Add more bars
var groups = selection.enter()
.append("g");

var bars = groups
.append("rect");

var labels = groups
.append("text");

// Update existing bars
groups
.attr("transform", function (d, i) { return "translate(0," + i * (barHeight + margin) + ")"; })
.on("click", function (d, i) { chartData.splice(i, 1); drawChart(); });

bars
.attr("width", function (d) { return d * 10 + "px"; })
.attr("height", barHeight);

labels
.attr("x", function (d) { return d * 10 - padding + "px"; })
.attr("y", barHeight / 3 + padding + "px")
.text(function (d) { return d; });

// update list of numbers
d3.select("#data-field").text("numbers: [" + chartData.join(", ") + "]");
}

// add more data
d3.select("#add-btn")
.on("click", function(d) { chartData.push(Math.round(Math.random() * 100)); drawChart(); });

</script>

</body>
</html>

最佳答案

在这里查看我的解决方案:http://fiddle.jshell.net/sydvpsfp/

主要问题是您没有删除 drawChart 函数开头的所有旧柱。我添加了这个:

        // remove any old bars
var oldBars=chart.selectAll("g");
if (oldBars.size()>0)
oldBars.remove();

关于javascript - 删除了不正确的 SVG 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26310664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com