Javascript d3.attr(';fill';“rgba(0,0,0,0.18)”有效;调用函数无效
我有一些D3代码,工作正常。它包括这样一个调用,用灰色填充区域:Javascript d3.attr(';fill';“rgba(0,0,0,0.18)”有效;调用函数无效,javascript,d3.js,Javascript,D3.js,我有一些D3代码,工作正常。它包括这样一个调用,用灰色填充区域: ... .attr("fill", "rgba(0,0,0,.18)") ... 但是,如果我将该行更改为以下内容(其中fillSmoke()返回相同的字符串“rgba(0,0,0,18)”),则图表将填充黑色,而不是所需的灰色 .attr("fill", function(d, i) {fillSmoke(d,i)}) ... and later ... fil
...
.attr("fill", "rgba(0,0,0,.18)")
...
但是,如果我将该行更改为以下内容(其中fillSmoke()返回相同的字符串“rgba(0,0,0,18)”
),则图表将填充黑色,而不是所需的灰色
.attr("fill", function(d, i) {fillSmoke(d,i)})
... and later ...
fillSmoke = (d, i) => {
return "rgba(0,0,0,0.18)"
}
我感觉D3在第一种情况下必须解析“rgba(0,0,0,18)”,但在第二种情况下不能。我该怎么做才能从fillSmoke()返回所需的灰色值?谢谢
解决方案:将函数体更改为包含
返回
(例如,{return fillSmoke(d,i)}
谢谢!attr方法的第二个参数可以是函数,但它必须返回您要使用的颜色值。现在,您的函数只调用fillSmoke,但不返回任何值。请将行更改为:
.attr("fill", function(d, i) { return fillSmoke(d,i); })
返回值需要return语句——只要fillSmoke返回所需的颜色值,该语句就可以工作。或者,这也可以工作:
.attr("fill", fillSmoke)
请参见
.attr
方法的第二个参数可以是一个函数,但它必须返回您要使用的颜色值。现在,您的函数只调用fillSmoke,但不返回任何值。通过将行更改为:
.attr("fill", function(d, i) { return fillSmoke(d,i); })
返回值需要return语句——只要fillSmoke返回所需的颜色值,该语句就可以工作。或者,这也可以工作:
.attr("fill", fillSmoke)
请参见这是一个愚蠢的错误-函数应该定义为返回fillSmoke()结果,如下所示:
function(d,i){return(d,i)}
谢谢大家。这是一个愚蠢的错误-函数应该定义为返回fillSmoke()结果,如下所示:
function(d,i){return(d,i)}
谢谢大家。您缺少
return
…D'oh!谢谢。您缺少return
…D'oh!谢谢。“现在您的函数只调用fillSmoke,但不返回任何值”…这是不正确的,JS中的所有函数都返回一个值。在这种情况下,它是未定义的
。正如一些海报所指出的,我需要将return
添加到函数体中…谢谢!“现在您的函数只调用fillSmoke,但不返回值”…这是不正确的,JS中的所有函数都返回一个值。在这种情况下,它是未定义的
。正如一些海报所指出的,我需要将返回
添加到函数体中…谢谢!