我正在使用D3.JS创建一个仪表板,用户可以从列表中选择要绘制的变量数。如果用户选择一个或两个变量,我想创建一个面积图。如果用户选择两个以上的变量,那么我想只创建面积图的边缘(即折线图)。我知道在创建折线图的代码中不需要进行任何更改。如何将条件语句添加到绘制面积图的代码部分?
我的数据有以下形式:
entries = [ { "key":"variable A", "value":[..] }, { "key":"variable B", "value":[..] } ]
我创建了一个“for”来迭代对象并计算用户选择了多少变量。要绘制的变量数存储在“count”
中focus.selectAll("path.area")
.data(entries)
.enter()
.append("path")
.attr("class", "area")
.attr("d", function (d) { return ( areasFocus(d.value) )})
.style("fill", function (d) { return ( color(d.key) ) });
我试图用
替换最后两个句子.attr("d", function (d) { return (count<=2? areasFocus(d.value):areasFocus() )})
.style("fill", function (d) { return (count<=2? color(d.key) : color()) });
但是,我在控制台中收到错误,告诉我“无法读取未定义的属性'长度”并且代码中断了。
我怀疑问题出在条件陈述中。
有什么想法吗?谢谢!
答案 0 :(得分:0)
条目变量中的任何内容都不包含length属性。好像你想得到一些数组/列表的长度和不是数组/列表的对象。
答案 1 :(得分:0)
我发现问题出现在if句子中,当条件为假时我需要做什么&#34;没有&#34;。我的错误是没有参数调用ares.Focus()。