Hundi: IE7 Problem - getElementByTagName/Xml/Array?

Ich habe mir eine kleine Func gebaut die mir XML Daten auslesen kann:

function _read_xml( xml ) {		  
	if ( xml ) {  
		var arr = xml.split( "." )  
		var str = document  
		for ( i=0; i<arr.length; i++ ) {  
			str = str.getElementsByTagName( arr[ 1 ] )[ 0 ]  
		}  
		str = str.firstChild.data  
		return str  
	}  
}  

Der IE (mit 7er getestet) hat jedoch Probleme mit der Zeile str = str.getElementsByTagName( arr[ 1 ] )[ 0 ]

Laut dem was ich gelesen habe sollte der IE7 das aber eig können.

Übergeben wird sowas wie: "de.error.java_error"

  1. Mahlzeit Hundi,

    ich versuche mal, Javascript-Parser zu spielen:

    function _read_xml( xml ) {

    (Angenommen, die Funktion wird wirklich mit einem String "de.error.java_error" als Parameter aufgerufen)

    if ( xml ) {

    Jo, eine Variable namens "xml" existiert und liefert auch nicht undefined zurück. Also rein in die Bedingung ...

      var arr = xml.split( "." )  
    

    Momeeent, da sind doch Punkte in dem String - ich generiere also mal ein Array('de', 'error', 'java_error') ...

      var str = document  
    

    Alles klar, ich lege eine Kopie des Objekts namens "document" in der lokalen Variablen namens "str" ab ...

      for ( i=0; i<arr.length; i++ ) {  
    

    Auf geht's: eine Schleife mit der globalen Variable i als Zähler, wir fangen bei 0 an und gehen bist zur Anzahl der im Array "arr" enthaltenen Elemente ...

      	str = str.getElementsByTagName( arr[ 1 ] )[ 0 ]  
    

    Beim 1. Durchlauf: Ich hole mir das erste Element mit dem Tagnamen "error", das sich innerhalb des Dokuments befinden und speichere den Wert n der Variablen "str" ... Huch?! Ein Element <error> gibt's in HTML doch gar nicht?!

    (selbst wenn kein Fehler aufgetreten wäre:)
    Beim 2. Durchlauf: Ich hole ... Huch?! In der Variablen "str" befindet sich ja ein String - der hat doch gar keine Methode getElementsByTagName()?!

    ...

    Der IE (mit 7er getestet) hat jedoch Probleme mit der Zeile [code lang=javascript]str = str.getElementsByTagName( arr[ 1 ] )[ 0 ]

      
    Kein Wunder.  
      
    
    > Laut dem was ich gelesen habe sollte der IE7 das aber eig können.  
      
    Das bezweifle ich doch sehr.  
      
      
    MfG,  
    EKKi  
    
    -- 
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    
    1. Hmm ich hab doch grade schonmal geschrieben warum ist die Nachricht weg ?:/

      Na jedenfalls mit dem String.. wenn du das in der Art meinst: document."error".usw, dann wüsst ich gern wie man das behebt^^
      Der FF kann das wohlgemerkt aber.

      Das es das Element in Html nicht gibt ( <error> ) stört den FF ebensowenig.. aber da die Funktion getElementByTagName() doch eig für XML gedacht ist sollte die doch auch solche Tags auslesen können :-O

      P.S.: Das:
      str = str.getElementsByTagName( arr[ 1 ] )[ 0 ]
      Sollte das heißen:
      str = str.getElementsByTagName( arr[ i ] )[ 0 ]

      1. Hi,

        lies bitte noch mal nach, was EKKi bzgl. der Variablen str schrieb.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        1. Das sich in der Var str ein String befindet? Sprichst du darauf an?
          Das  hilft mir leider nicht weiter

          1. Mahlzeit Hundi,

            Das sich in der Var str ein String befindet? Sprichst du darauf an?

            Vermutlich wollte er das.

            Das  hilft mir leider nicht weiter

            Das liegt vermutlich daran, dass Dir eine Menge Grundlagenwissen in Bezug auf http://de.selfhtml.org/javascript/objekte/string.htm@title=String-Objekte und die Methode http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName() fehlt. Hole das nach und versuche erneut, meine Anmerkungen zu verstehen. Wenn Du konkrete Fragen dazu hast, kannst Du sie gern stellen.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Da habe ich nicht die Zeit zu.. Na dann werd ich den IE aussen vor lassen und weiter den FF nutzen

              1. Mahlzeit Hundi,

                Da habe ich nicht die Zeit zu.

                Dann bist Du hier falsch:

                "Wichtiger als die äußere Form ist die innere Einstellung. Die "Energie des Verstehens" ist schon lange das Motto von SELFHTML. Gemeint ist damit, dass sich SELFHTML nicht an Leute richtet, die alles fertig vorgesetzt bekommen wollen. SELFHTML fordert von Lernwilligen, sich mit der Materie HTML & Co. auseinanderzusetzen, zu lernen und vor allem zu versuchen, diese zu verstehen. Dieser Grundsatz gilt auch im Forum."

                Na dann werd ich den IE aussen vor lassen und weiter den FF nutzen

                Das ist prinzipiell IMHO die richtige Entscheidung und im konkreten Fall auch einfach umsetzbar - aber was machst Du, wenn Du mal auf ein *wirkliches* Problem stößt und Du dann wieder bzw. immer noch keine Lust hast, damit ernsthaft zu beschäftigen?

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|