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

D3js attribute : why passing function as unique argument fail?

我想离开完善的 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

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

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

知道这是否是预期的 d3js 行为吗?我做错了什么?并且,可能还有如何让它发挥作用。

从 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 {} !