JS auf SVG - Holen innerHTML eines Elements

8

Ich wollte einige Daten aus einer SVG-Datei extrahieren. Ich weiß, dass SVG XML ist, also dachte ich, dass es ziemlich einfach wäre, die Daten mit JS herauszulocken.

Ich wollte also eine Menge Text aus einer SVG extrahieren. Also habe ich die JS-Konsole von Chrome angeworfen und versucht, ein paar Sachen zu machen. Ich musste alle tspan -Elemente in einem Array abrufen, ihren Text extrahieren und kategorisieren.

Ich beziehe mich im Moment auf Ссылка .

Also, ich benutze a = document.getElementsByTagName('tspan') . Jetzt probiere ich a[20].innerHTML und bekomme undefined . Angemessen; es ist kein HTML und iirc innerHTML ist sowieso nicht standardisiert.

Dann probiere ich a[20].childNodes[0] und bekomme "ELF" . OK, das wollte ich. Aus irgendeinem Grund wird dieses Objekt wie eine Zeichenfolge behandelt, kann jedoch nicht in eine Zeichenfolge konvertiert werden. Wenn ich versuche es zu konvertieren (damit ich Sachen wie matches() und indexOf() benutzen kann), bekomme ich "[object Text]" . Das Auftauchen in Text.prototype hilft nicht - ich kann keine Funktion finden, die es in eine Zeichenkette umwandelt.

Wie kann man also das innerHTML eines SVG-Objekts durch JS bekommen?

    
Manishearth 07.03.2012, 13:50
quelle

2 Antworten

9

Wählen Sie das Element wie Sie haben, aber verwenden Sie die folgenden, um auf den Text zuzugreifen:

%Vor%

Dies ist kein Ersatz für innerHTML in SVG, funktioniert aber so lange, wie Sie nur Text und kein Markup extrahieren möchten.

    
Sirko 07.03.2012, 13:53
quelle
1

Ein Text -Knoten sieht wie eine Zeichenfolge aus wenn Sie es in der Konsole untersuchen, aber es ist keine Zeichenfolge. Für eine Zeichenfolge möchten Sie die nodeValue . Probieren Sie:

%Vor%     
Phrogz 07.03.2012 19:21
quelle

Tags und Links