Ich bin neu in D3 und versuche, aus Rechtecken eine tabellenähnliche Struktur zu erstellen. Ich möchte, dass der Header eine andere Farbe hat als der Rest der Rechtecke. Ich habe den folgenden Code geschrieben:d3.js versucht, die Datenmethode zweimal auf demselben Selektor aufzurufen, führt zu seltsamen Ergebnissen
table = svgContainer.selectAll('rect')
.data([managedObj])
.enter()
.append('rect')
.attr("width", 120)
.attr("height", 20)
.attr("fill", "blue")
.text(function(d) {
return d.name;
});
// create table body
table.selectAll('rect')
.data(managedObj.data)
.enter()
.append('rect')
.attr("y", function() {
shift += 20;
return shift;
})
.attr("width", 120)
.attr("height", 20)
.attr("fill", "red")
.text(function(d) {
return d.name;
});
Dies erzeugt die folgenden Ergebnisse:
Das ist fast, was soll ich außer es die zweite Gruppe von Rechtecke innerhalb des ersten Rechtecks nisten. Dies bewirkt, dass nur das erste blaue Rechteck sichtbar ist. Ich gehe davon aus, dass dies etwas damit zu tun hat, die Datenmethode zweimal aufzurufen. Wie kann ich dieses Problem beheben?
Es gibt hier nichts fremd. 'svgContainer' ist eine Eingabeauswahl für ein Rechteck. Sie können ** nicht ein rect an ein anderes rect anhängen. –