使用D3附加有条件设置名称的元素

时间:2014-04-22 17:38:31

标签: javascript html css d3.js

我有一个功能,根据正数或负数增加三角形向上或向下看。

            var pointer = column
            .append("polygon")
            .attr("points", function (d, i) {
                if (d.difference > 0)
                    return "0,0 -10,0 -5,-8";
                else if ((d.difference < 0)) {
                    return "0,0 10,0 5,8";
                }
            })

对于小于或大于零的数字,它可以正常工作。现在我想添加一个圆圈,如果它为零。

我想知道是否可以改变&#34; polygon&#34;到&#34;圈&#34;在这种情况下作为一种元素?否则,我该如何以不同方式执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以将函数传递给.append()而不是名称,该函数返回要追加的DOM元素。所以你可以有一个函数在一个案例中返回polygon而在另一个案例中返回circle

该方法的问题在于,您需要根据所追加的元素类型设置不同的属性。因此,您需要在返回DOM元素的函数中设置这些属性,这当然是可能的,但不是非常D3。这也会使得使用D3的辅助函数变得更加困难,这对您来说可能是也可能不是问题。

替代方法是始终附加path并适当地设置d属性,可能使用自定义路径生成器。这将允许您使用一致的代码。