2016-06-20 1 views
1

Alle anhängen:wie man bedingt Element in D3 .enter() Funktion

Ich frage mich, wie die verschiedenen Elemente in D3 .data().enter(), zum Beispiel anfügen:

Wenn ich Tabellenspalte angehängt werden soll, sondern anhängen jede Spalte als td Ich möchte die erste Spalte als th, so dass der Code wie folgt aussieht:

tbody.append("tr").selectAll("anyplcaeholder").data([1,2,3,4]) 
    .enter() 
// I do not know how to do this folloing 

Eine Idee? Dank

Antwort

2

Sie könnten so:

var table = d3.select('body').append('table'); 

var tr = table.selectAll('tr') 
    .data([1,2,3,4,5]).enter() 
    .append('tr'); 

tr.append('th').html(function(d) { return d; }); // add your condition here 
tr.append('td').html(function(d) { return " "; }); // if you need more 
tr.append('td').html(function(d) { return " "; }); // columns with data 

Dieser Code geben Sie etwas wie folgt aus:

<table> 
    <tr> 
     <th>1</th> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
    </tr> 
    <tr> 
     <th>2</th> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
    </tr> ..... 

Die right way Spaltenkopf an einem Tisch

Here die Arbeits jsFiddle hinzufügen

+0

Danke, also meinst du, wir müssen das manuell herausfinden lieber als Schleife verwenden? – Kuan

+0

Nr. D3 soll die Verwendung von Schleifen verhindern. Sie können alle Tabellen ohne Schleife erstellen. Ihr Fall ist besonders. Die letzten 3 Zeilen bilden eine benutzerdefinierte Zeile und D3 macht den Rest der Tabelle mit Ihren Daten. – Klaujesi