我正在制作一个带有不同圆圈的情节。每个圆圈都有固定的位置,但每个圆圈的大小可以通过 html 输入字段单独更改。
用于输入字段的代码是这样的:
<input type="text" id="size1" class="size" value="" style="width: 30px;">
我已将数据保存在此数据集中:
var dataset = [{name: "circle1", xpos: -413, ypos: 278, color: "black", radius: $('#size1').val(),},
{name: "circle2", xpos: -161, ypos: 290, color: "black", radius: $('#size2').val(),}];
这就是我画圆的方式:
function drawCircle () {
svg.selectAll("circle").remove();
svg.selectAll("circle")
.data(dataset)
.enter()
.append("svg:circle")
.attr("cx", function(d){
return xScale(d.xpos);})
.attr("cy", function(d){
return yScale(d.ypos);})
.attr("r", function (d){
return rScale(d.radius);})
.attr("fill", "rgb(100,0,0)")
.attr("opacity", "0.7");
}
最后我做了一个触发器,当事情发生变化时,圆圈会再次绘制:
$('.size').change(function(){
radius = $(this).val();
svg.selectAll("circle")
.transition()
.duration(750)
.attr("r", function (d){
return rScale(radius);})
});
这样,当我更改#size1 或#size2 中的值时,两个圆圈都会用最后输入的值重新绘制。
我的问题是:如何更新数据集,让每个圈子都“听”自己的输入字段?