it-swarm.com.de

so können Sie feststellen, ob meine Auswahl bereits vorhandene Elemente enthält

Ich mache einen Umschalter in d3 und versuche, globale Variablen zu vermeiden. 

Ich kann das Element auswählen, als ob es bereits in der Szene wäre:

d3.select('#awesome_line_graph')

und dann testen, ob ich etwas mit erwischt habe 

if (d3.select('#awesome_line_graph')[0].every(function(d){return d===null})){
    // draw awesome line graph
} else {
    d3.select('#awesome_line_graph').remove()
}

aber das Testen des nullten Elements für vielleicht mehr als eine Null-Sache scheint schrecklich und hackig. Wie soll ich das machen? Entschuldigung für nicht viel Javascript. 

40
Mike Dewar

Verwenden Sie selection.empty() . Wenn die Auswahl leer ist, müssen Sie sie auch nicht entfernen.

77
mbostock

Ich empfehle Ihnen dringend, Mike Bostocks D3 Workshop Dokument zu lesen. Darin spricht er darüber, wie eine Auswahl ein Array von Elementen zurückgibt, die den Auswahlkriterien entsprechen. Wenn also die Länge des Arrays größer als "0" ist, haben Sie die richtige Übereinstimmung gefunden und ausgewählt.

Möglicherweise möchten Sie auch seine Dokumentation zu " Verschachtelte Auswahl " lesen. Ich fand es sehr nützlich.

Ich hoffe das hilft.

Frank

In beiden Fällen wird die Verwendung von length nicht als einzelnes Objekt mit allen Ergebnissen zurückgegeben. Vielleicht könntest du so etwas machen ...

var selected = d3.select('#selected');
if (selected._group[0][0] == null) { 
    // nothing found 
} else { 
    // found something 
}                                   
0