JS SVG-immer innerHTML von einem element
Wollte ich daraus einige Daten aus einer SVG-Datei. Ich weiß, dass SVG auf XML, so dass ich dachte, es wäre ziemlich einfach zu coax werden die Daten mit JS.
So, ich wollte, um eine Reihe von text extrahiert aus einer SVG. So feuerte ich chrome JS-Konsole, und habe versucht, einige Sachen. Ich brauchte, um alle tspan
Elemente in einem array extrahieren, deren text und zu kategorisieren.
Ich beziehe mich auf http://upload.wikimedia.org/wikipedia/commons/e/eb/Light_spectrum.svg im moment.
So, ich benutze a = document.getElementsByTagName('tspan')
. Nun, ich versuche a[20].innerHTML
, und erhalten Sie undefined
. Vernünftig; es ist nicht HTML und iirc innerHTML ist standardgemäß sowieso.
Dann versuche ich a[20].childNodes[0]
und bekommen "ELF"
. OK, das ist was ich wollte. Aber aus irgendeinem Grund, das Objekt wird behandelt wie ein string, aber nicht in eins umgewandelt. Wenn ich versuche es zu konvertieren (so, dass ich Sachen wie matches()
und indexOf()
), bekomme ich "[object Text]"
. Eintauchen in Text.prototype
nicht helfen-ich finde keine Funktion, die wandelt es in eine Zeichenfolge.
Also, wie kann man das innerHTML von einem SVG-Objekt durch JS?
- Auch, für einige Grund, der Prototyp zeigt, dass bestimmte andere eingebaute Funktionen, die man normalerweise sieht im HTML-Format (in der Tat, genau das, was ich brauche) fehlen. Toll-jetzt ist das W3C ist die Verschwörung gegen mich...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wählen Sie das element, wie Sie Sie haben, aber verwenden Sie die folgenden, um Zugang zu Ihrem text:
Dies ist kein Ersatz für
innerHTML
im inneren SVG, aber wird funktionieren, solange Sie nur wollen, zu extrahieren text und kein markup.<tspan>
element sollte aktiviert sein. Werden kann anderen. Ein wichtiger Aspekt ist die Eigenschaft (textContent
) zu verwenden, danach.Einen
Text
- Knoten sieht aus wie eine Zeichenfolge, wenn Sie überprüfen in der Konsole, aber es ist kein string. Für eine Zeichenfolge, die Sie wollen, dass dienodeValue
. Versuchen: