这里有d3.js的新手。我试图访问每个数据的属性,但有些数据没有属性。当我尝试访问数据没有的属性时,我收到以下错误消息。
未捕获的TypeError:无法读取属性
颜色(数据[d.id] [属性])
var change = function() {
val = d3.event.target.value;
d3.selectAll("path").style("fill", function(d) {
// in this case val might be the property of the data[d.id], so that i
// want to escape this case.
color(data[d.id][val]); // data is a global variable
});
}
我的问题是如何只是跳过访问该特定属性以避免此类型错误?
提前谢谢你。
答案 0 :(得分:2)
有几种方法可以检查该属性是否存在。其中一个是使用ternary operator:
d3.selectAll("path").style("fill", function(d) {
return data[d.id][val] ? color(data[d.id][val]) : "#ccc"
});
在这种情况下,如果属性存在,匿名函数将返回color(data[d.id][val])
,如果不存在,它将返回#ccc
(根据您的需要更改此颜色)。