getElementsByTagName.firstChild.data - keine Rückgabe!
luk
- javascript
Hallo
Ich habe folgendes Problem:
Ich möchte den Inhalt des dc:description tags abfragen. mein code:
----------------
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<?AdobeSVGViewer save="snapshot"?>
<svg id="svg1" width="600" height="370" viewBox="593814 245290 44143 21702" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="init(evt);data();meta2html();">
<metadata>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
rdf:Description
dc:languageDE</dc:language>
dc:descriptionHier kommt die Beschreibung des Datensatzes. Diese Beschreibung kommt vom CSV metafile.</dc:description>
</rdf:Description>
</rdf:RDF>
</metadata>
<script type="text/ecmascript"><![CDATA[
function meta2html()
{
meta=document.getElementsByTagName("dc:description").firstChild.data;
alert(meta)
}
]]></script>
-------------
document.getElementsByTagName("dc:description") gibt mir ein [object NodeList] aus mit firstChild.data gibt es eine Fehlermeldung.
Wie komm ich zzu diesem Text?
Hallo luk,
meta=document.getElementsByTagName("dc:description").firstChild.data;
^ ^
get ElementsByTagname liefert eine Collection zurück und du musst wählen, das wievielte Element du haben willst, also document.getElementsByTagName("dc:description")[0]..., wenn es das erste ist.
Zum ":" im Tagnamen siehe hier http://forum.de.selfhtml.org/archiv/2007/9/t158965/#m1034006.
Ich habe übrigens das Problem so gelöst, dass ich alle Untertags durchgehe, deren Name abfrage und den gewünschten zurückgebe, also das ganze "zu Fuß". Allerdings läuft das Script bei mir im Browser, und da gibt es so kleine Unterschiede in der Auslegung der Spezifikationen.
Gruß, Jürgen
Hallo luk,
meta=document.getElementsByTagName("dc:description").firstChild.data;
^ ^get ElementsByTagname liefert eine Collection zurück und du musst wählen, das wievielte Element du haben willst, also document.getElementsByTagName("dc:description")[0]..., wenn es das erste ist.
Das funktioniert leider nicht... "ist Null oder kein Objekt"
Zum ":" im Tagnamen siehe hier http://forum.de.selfhtml.org/archiv/2007/9/t158965/#m1034006.
Ich habe übrigens das Problem so gelöst, dass ich alle Untertags durchgehe, deren Name abfrage und den gewünschten zurückgebe, also das ganze "zu Fuß". Allerdings läuft das Script bei mir im Browser, und da gibt es so kleine Unterschiede in der Auslegung der Spezifikationen.
Wie gehts du da durch? hast du mir ein Code-Beispiel? dann kann ich testen ob es bei mir auch funk. würde
Gruss, Luk
Gruß, Jürgen
Hallo luk,
Wie gehts du da durch? hast du mir ein Code-Beispiel? dann kann ich testen ob es bei mir auch funk. würde
Beispiel habe ich nur zu Hause, da komme ich erst am Abend dran. Aber im Prinzip hole ich mir mit elem.document.getElementsByTagName("*") alle Tages im Element elem. Elem ist z.B. document.getElementById... . Dann greife ich auf die Namen der Elemente zu und werte sie aus.
Hast du denn die Beispiele im verlinkten Thread schon mal ausprobiert? Vieleicht reicht ja auch getElementsByTagNameNS. Dein Quellcode sah jetzt nicht so aus, als ob er in jedem Browser laufen soll (<?AdobeSVGViewer save="snapshot"?>).
Gruß, Jürgen
Hallo luk,
Wie gehts du da durch? hast du mir ein Code-Beispiel? dann kann ich testen ob es bei mir auch funk. würde
Beispiel habe ich nur zu Hause, da komme ich erst am Abend dran. Aber im Prinzip hole ich mir mit elem.document.getElementsByTagName("*") alle Tages im Element elem. Elem ist z.B. document.getElementById... . Dann greife ich auf die Namen der Elemente zu und werte sie aus.
Hast du denn die Beispiele im verlinkten Thread schon mal ausprobiert? Vieleicht reicht ja auch getElementsByTagNameNS. Dein Quellcode sah jetzt nicht so aus, als ob er in jedem Browser laufen soll (<?AdobeSVGViewer save="snapshot"?>).
Die Anwendung muss nur auf dem IE laufen. Das mit dem Namespace hat auch nicht funktioniert. Ich probier mal die erste Varainte aus.
Vielen Dank und Gruss
Lukas
Hallo luk,
Wie gehts du da durch? hast du mir ein Code-Beispiel? dann kann ich testen ob es bei mir auch funk. würde
Beispiel habe ich nur zu Hause, da komme ich erst am Abend dran. Aber im Prinzip hole ich mir mit elem.document.getElementsByTagName("*") alle Tages im Element elem. Elem ist z.B. document.getElementById... . Dann greife ich auf die Namen der Elemente zu und werte sie aus.
Hast du denn die Beispiele im verlinkten Thread schon mal ausprobiert? Vieleicht reicht ja auch getElementsByTagNameNS. Dein Quellcode sah jetzt nicht so aus, als ob er in jedem Browser laufen soll (<?AdobeSVGViewer save="snapshot"?>).
Die Anwendung muss nur auf dem IE laufen. Das mit dem Namespace hat auch nicht funktioniert. Ich probier mal die erste Varainte aus.
Vielen Dank und GrussLukas
Ich habe es: nur ein bischen komisch.. resp. ich komme nicht ganz nach:
meta=document.getElementsByTagName("dc:description").getFirstChild().getNodeValue()
funktioniert nicht!!
dann definiere ich eine ID
meta=document.getElementById("dcdesc").getFirstChild().getNodeValue()
und es geht...
Ist mir so was von schleierhaft. Eigentlich möchte ich nicht noch eine ID einfügen..
Gruss
Luk
Hallo luk,
meta=document.getElementsByTagName("dc:description").getFirstChild().getNodeValue()
funktioniert nicht!!
Hier fehlt die Referenz auf den ersten Listeneintrag (Index 0) des abgefragten NodeList-Objekts. Zudem sind die (proprietären) get-Methoden zwar im ASV verfügbar, sollten aber zugunsten der gleichnamigen Eigenschaften nicht verwendet werden.
Die naheliegende Lösung wäre:
meta=document.getElementsByTagName("dc:description")[0].firstChild.nodeValue;
Allerdings unterstützt der ASV die []-Schreibweise nicht. Stattdessen hilft die item()-Methode:
meta=document.getElementsByTagName("dc:description").item(0).firstChild.nodeValue;
Grüße,
Thomas