Ich versuche einen Punkt in einem d3 Liniendiagramm zu markieren. Dies muss in einem Funktionsaufruf erfolgen, nachdem das Liniendiagramm erstellt und in einer anderen Funktion gezeichnet wurde.Wie auf Svg in einer anderen Funktion definiert zugreifen?
Das Zeichnen des Liniendiagramms (und das Erstellen des Svg-Objekts) erfolgt in einer update_graph-Funktion. Ich versuche herauszufinden, wie Sie am besten auf das Svg-Objekt zugreifen können, das im Funktionsaufruf highlight_point verwendet werden soll.
Ich habe eine jsfiddle hier erstellt: https://jsfiddle.net/pxc0gpc6/4/ Wenn der Code in update_graph nicht in einem Funktionsaufruf eingeschlossen ist, funktioniert der highlight_point-Code wie erwartet. Aber wenn ich den Code innerhalb der Funktion update_graph habe, weiß ich nicht mehr, wie ich auf das Svg-Objekt zugreifen soll.
Ich habe versucht, der Svg eine ID zu geben, so dass ich wieder darauf zugreifen kann, aber der markierte Punkt wird nicht am Liniendiagrammbereich gezeichnet. Ich habe auch versucht die svg global zugänglich zu machen, indem eine this.svg Variable am Ende der update_graph Funktion zu schaffen, aber das funktioniert auch nicht:
this.svg = svg;
Dank! Eine Sache, die ich klarstellen möchte - ich möchte nicht alle Punkte hervorheben, sondern nur einige wenige. Nehmen wir zum Beispiel an, ich möchte nur den zweiten Punkt in einer der Zeilen markieren. Ist es möglich, dies zu tun? – user1253952
Sie können Filter verwenden, um den Punkt nach Ihrer Wahl auszuwählen .. siehe meinen Bearbeitungsabschnitt in der Antwort .. – Cyril