D3.js 如何在不使用用户输入表单的情况下设置齿轮示例的初始状态

D3.js 如何在不使用用户输入表单的情况下设置齿轮示例的初始状态,d3.js,D3.js,我正试图用博斯托克的例子做一个简单的变体 运行gears的特定代码与html用户表单一起工作。具体代码如下: d3.selectAll("input[name=reference]") .data([radius * 5, Infinity, -radius]) .on("change", function(radius1) { var radius0 = frame.datum().radius, angle = (Date.now() - start) * speed

我正试图用博斯托克的例子做一个简单的变体

运行gears的特定代码与html用户表单一起工作。具体代码如下:

d3.selectAll("input[name=reference]")
  .data([radius * 5, Infinity, -radius])
    .on("change", function(radius1) {
      var radius0 = frame.datum().radius, angle = (Date.now() - start) * speed;
      frame.datum({radius: radius1});
      svg.attr("transform", "rotate(" + (offset += angle / radius0 - angle / radius1) + ")");
    });
我尝试的是将
.on(“change”
函数中的所有内容从其闭包中移除。我的想法是,即使没有单选按钮,所有需要的变量都将始终在范围内。但是我得到了d3错误:“无法读取数据的属性”null”从d3.js库的第761行开始,这就是我被卡住的地方

所以重申一下,为了使这些gears成为我的简单变体,我想删除表单中包装的所有html单选按钮,让gears在页面加载时开始旋转。有人能告诉我我应该在这里做什么吗


谢谢

示例代码实际上格式不正确,缺少一个body标记。我认为它可以工作,因为当浏览器解析
标记时,它会自动将其包装在
中。因此,当您取出表单时,添加一个body


身体{
字体系列:“Helvetica Neue”,Helvetica,Arial,无衬线;
宽度:960px;
高度:500px;
位置:相对位置;
}
形式{
位置:绝对位置;
顶部:1米;
左:1米;
}
路径{
填充规则:偶数奇数;
冲程:#333;
笔画宽度:2px;
}
*太阳径{
填写:#第6版;
}
.行星路径{
填充:#9ecae1;
}
.环形通道{
填充:#c6dbef;
}
可变宽度=960,
高度=500,
半径=80,
x=Math.sin(2*Math.PI/3),
y=Math.cos(2*Math.PI/3);
var偏移=0,
速度=4,
开始=日期。现在();
var svg=d3.选择(“正文”).追加(“svg”)
.attr(“宽度”,宽度)
.attr(“高度”,高度)
.附加(“g”)
.attr(“变换”、“平移”(“+width/2+”、“+height/2+”)比例(.55)”)
.附加(“g”);
var frame=svg.append(“g”)
.基准({
半径:无穷大
});
框架。附加(“g”)
.attr(“类”、“环空”)
.基准({
牙齿:80,
半径:-半径*5,
环空:对
})
.append(“路径”)
.attr(“d”,齿轮);
框架。附加(“g”)
.attr(“类”、“太阳”)
.基准({
牙齿:16,
半径:半径
})
.append(“路径”)
.attr(“d”,齿轮);
框架。附加(“g”)
.attr(“类”、“行星”)
.attr(“变换”、“平移(0、“+半径*3+”))
.基准({
牙齿:32,
半径:-半径*2
})
.append(“路径”)
.attr(“d”,齿轮);
框架。附加(“g”)
.attr(“类”、“行星”)
.attr(“变换”、“平移”(“+-radius*3*x+”,“+-radius*3*y+”)
.基准({
牙齿:32,
半径:-半径*2
})
.append(“路径”)
.attr(“d”,齿轮);
框架。附加(“g”)
.attr(“类”、“行星”)
.attr(“变换”、“平移”(“+radius*3*x+”,“+-radius*3*y+”)
.基准({
牙齿:32,
半径:-半径*2
})
.append(“路径”)
.attr(“d”,齿轮);
//所有3个选项
var radius1=半径*5;
var半径1=无穷大;
var radius1=-半径;
var radius0=框架基准面()半径,
角度=(Date.now()-开始)*速度;
框架基准({
半径:半径1
});
attr(“transform”、“rotate”(+(offset+=angle/radius0-angle/radius1)+”);
功能齿轮(d){
var n=d.齿,
r2=数学绝对值(d半径),
r0=r2-8,
r1=r2+8,
r3=d.环空?(r3=r0,r0=r1,r1=r3,r2+20):20,
da=Math.PI/n,
a0=-Math.PI/2+(d.环空?Math.PI/n:0),
i=-1,
path=[“M”,r0*Math.cos(a0),“,”,r0*Math.sin(a0)];
而(++i
aha,你说得对。从后视镜上看是有道理的。我把太多的注意力放在了小东西上,忽略了没有尸体的明显事实。