0

私はこれを持っています:

g.append(function(d) {
  return document.createElementNS("http://www.w3.org/2000/svg", d.shape);
})

またはd.shapeができる場所。形状に応じて、属性を追加したいと思います。円の場合:circlepolygon

.attr('r', 12)

多角形の場合:

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

しかし、この変数ペアの属性名/値を追加する方法がわかりません。出来ますか?関連する jsbin はこちらです。

4

1 に答える 1

1

これには選択フィルターを使用し、要素の nodeName プロパティでフィルタリングします。

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

- https://github.com/mbostock/d3/wiki/Selections#wiki-filter

または、属性関数内で正しい nodetype を確認してください。

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

私は肯定的ではありませんが、未定義の "r" 属性を円以外の要素 (円の「ポイント」など) に割り当てようとすると、これが問題になるとは思いません。

于 2013-08-23T13:54:13.153 に答える