D3js属性:为什么传递函数作为唯一参数失败?

时间:2015-01-26 23:45:02

标签: d3.js

我想从完善的css样式部分和类的使用转移:

<style>
land  { fill:grey; }
focus { fill:yellow; }
</style>

svg.
  ...      // some stuff here
  .attr("class","focus");  

...到纯js变量:

var land = { 'fill':'grey' };
var focus= { 'fill':'yellow'};

我观察到以下内容......

结论

传递2个参数,第二个是函数(1),或者一个参数作为变量(2)完美地运行:

 .attr("class", function(d){ if(){...}else{...} })  // (1) works

 .attr(land)  // (2) works

但是当我将它作为单个参数函数(3)传递时,(1) FAILS 中的这个函数完全相同:

 .attr(function(){ return land; }) // fails. Expected to return variable  `land`, as for (2).

不知道这是否是一个预期的d3js行为?我做错了什么?而且,可能,如何让它发挥作用。

1 个答案:

答案 0 :(得分:0)

从css样式迁移到纯js,如下所示。

你以前的css:

<style>
land  { fill:grey; }
focus { fill:yellow; }
</style>

...产生js变量:

var land = "fill:grey" ;                        // no {}
var focus= "fill:yellow, stroke-color: #F00";   // , or ; should be ok.

...和d3js:

 ...
 .attr("style", function(){return land}) // this is the way, together with no {} !