对D3.js感到困惑:SVGAnimatedLengthList不是函数错误

时间:2015-07-13 14:57:07

标签: javascript svg d3.js

我正在尝试使用D3.js创建一个条形图对象,但我似乎可以让它工作。

我像这样定义了x-scale:

    var Barplot = function(){
            this.x = d3.linear().....

    ...

然后我尝试使用这样的比例

    this.bar.append("text")
        .attr("x", function(d){
             return this.x(d) + 5;
        } 

然而,当我运行此操作时,我收到此错误 - >

    TypeError: SVGAnimatedLengthList is not a function (evaluating 'this.x(d)' ).

并且我不知道为什么特别是因为如果我将this.x更改为var x将会有效。

1 个答案:

答案 0 :(得分:2)

this指的是两个不同的东西。在属性函数内,this引用当前的DOM元素(参见the documentation)。如果您确实需要引用外部this,请将其保存在变量中(例如var that = this),然后使用that