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