Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向选择添加动态属性名称_Javascript_D3.js - Fatal编程技术网

Javascript 向选择添加动态属性名称

Javascript 向选择添加动态属性名称,javascript,d3.js,Javascript,D3.js,我有这个: g.append(function(d) { return document.createElementNS("http://www.w3.org/2000/svg", d.shape); }) 其中d.shape可以是圆或多边形。现在,根据形状,我想添加一个属性。对于圆形: .attr('r', 12) 对于多边形: .attr('points', '05,30 15,10 25,30')) 但是我不知道如何添加这个变量对属性名称/值。可能吗?一个相关的jsbin是。我会

我有这个:

g.append(function(d) {
  return document.createElementNS("http://www.w3.org/2000/svg", d.shape);
})
其中
d.shape
可以是
多边形
。现在,根据形状,我想添加一个属性。对于圆形:

.attr('r', 12)
对于多边形:

.attr('points', '05,30 15,10 25,30'))

但是我不知道如何添加这个变量对属性名称/值。可能吗?一个相关的jsbin是。

我会为此使用一个选择过滤器,对元素的nodeName属性进行过滤:

d3.selectAll("top_level_selector") //or use existing selection from appending
.filter(function(d,i){
    return this.nodeName == 'circle';
})
.attr("r", 12);
-

或者可能只是在属性函数中检查正确的节点类型:

selection
.attr('r',function(d,i){
    if(this.nodeName =='circle'){ return 12 }
});

我不是肯定的,但我认为当它试图将未定义的“r”属性分配给非圆元素(以及圆上的“点”等)时,这不会出现问题。

您可以简单地添加所有属性,并在不适用的情况下将其保留为空。