D3.js D3:可以创建元素的子集,但不能更新它们

D3.js D3:可以创建元素的子集,但不能更新它们,d3.js,selection,D3.js,Selection,我有一个数据集,其中一个元素是另一个长度可变的数据集(我们称之为“dataset2”) 我创建了一个复杂的绘图: var group = svg.selectAll('g').data(dataset) var groupEnter = group.enter().append('g') /* Add new elements */ groupEnter.append('line') ... groupEnter.append('polygon') ...

我有一个数据集,其中一个元素是另一个长度可变的数据集(我们称之为“dataset2”)

我创建了一个复杂的绘图:

var group = svg.selectAll('g').data(dataset)
var groupEnter = group.enter().append('g')

/* Add new elements */  
groupEnter.append('line')  
    ...  
groupEnter.append('polygon')  
    ...  
groupEnter.append('text')  
    ...  

/* Update elements */
group.select('line')  
    ...  
group.select('polygon')  
    ...  
group.select('text')  
    ...  
到目前为止还不错

现在,我想添加表示“数据集2”的多边形:

这似乎有效;将创建多边形

但是,我无法更新它们:

subGroup.selectAll('.someClass')
    ...
这没有效果

如果我跑

subGroup.selectAll('.someClass')
    .attr('...', function(d) { console.log(d); return ... })
没有输出


我做错了什么?

这是因为您没有实际向子组添加
someClass
(至少在您显示的片段中)

也许吧


或者类似的东西(仅上面的片段很难更具体)

你是对的:我在“.attr('class','someClass')”中指定了类,但在上面的代码中没有提到它。我修正了这个问题。
subGroup.selectAll('.someClass')
    .attr('...', function(d) { console.log(d); return ... })
var subGroupEnter = subGroup.enter().append('polygon').classed('someClass', true)