【发布时间】:2012-10-31 13:46:26
【问题描述】:
我正在制作一个带有不同圆圈的情节。每个圆圈都有固定的位置,但每个圆圈的大小可以通过 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 中的值时,两个圆圈都会用最后输入的值重新绘制。
我的问题是:如何更新数据集,让每个圈子都“听取”自己的输入字段?
【问题讨论】:
-
如何确定“自己的圈子”?顺便说一句,将您的
radius变量设为本地
标签: javascript jquery d3.js