以下是我在here找到的D3示例中的js代码。
var MsaSubGroup = svg.append("g").attr("id","MsaSubGroupData").attr("class","pieChart");
Donut3D.draw("MsaSubGroupData", getData(MSA), 450, 150, 130, 100, 30, 0.4);
var wedges = MsaSubGroup.selectAll("g.slices").data(datum).enter();
wedges.on("mousemove", function(d){ //This is what the browser is complaining about.
mousex = d3.mouse(this);
mousex = mousex[0];
//console.log(d);
d3.select(this)
.classed("hover", true);
tooltip.html(d.label+": " + d.value).style("visibility", "visible").style("left", mousex + "px" );
});
我做了一些修改,尝试添加数据和工具提示。事实上我很需要将数据绑定到svg。但是,我在控制台中遇到了奇怪的错误:
未捕获的TypeError:undefined不是函数
究竟什么是未定义的?当我在console.log(datum)中,我可以看到返回的对象数组,那么我做错了什么?
非常感谢。
答案 0 :(得分:1)
wedges
是enter()
来电的结果:
仅定义
append
,insert
,select
和call
运算符
所以它没有任何on
方法,这就是导致&#34; undefined不是函数&#34; 错误的原因。< / p>
我假设你想要:
var wedges = MsaSubGroup
.selectAll("g.slices")
.on('mousemove', ...);
wedges.data(myData).enter()...
或
var wedges = MsaSubGroup
.selectAll("g.slices")
.data(myData)
.enter()
.append('g')
.on('mousemove', ...);