如何避免访问d3.js中的属性

时间:2017-04-27 23:08:16

标签: javascript d3.js

这里有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

      });
 }

我的问题是如何只是跳过访问该特定属性以避免此类型错误?

提前谢谢你。

1 个答案:

答案 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(根据您的需要更改此颜色)。