piet: getelementbyid funktioniert nicht bei IE

Hallo,

ich erzeuge dynamische Seiten welche mit Werten mit Ajax aktualisiert werden.
Diese Seite funktioniert unter Firefox (/Win/Linux) sowie Konqueror,
jedoch nicht unter win2k IE 6.0.2800.1106

Der Fehler liegt beim beschreiben des Tag's.
"document.getElementbyid(id).firstchild.nodevalue = wert"
bringt unter den Browsern nicht den gleichen Effekt.
Ein "window.status = wert" zeigt auch unter IE den richtigen Wert an.

Nochmals, das Programm an sich funktioniert unter 2 Browsern, leider jedoch nicht unter IE.

vielen Dank
           piet

  1. Hellihello piet,

      
    getElementById("id")  
    
    

    Der Fehler liegt beim beschreiben des Tag's.
    "document.getElementbyid(id).firstchild.nodevalue = wert"
    bringt unter den Browsern nicht den gleichen Effekt.
    Ein "window.status = wert" zeigt auch unter IE den richtigen Wert an.

    Dank und Gruß,

    frankx

    1. Hellihello piet,

      getElementById("id")

      
      >   
      
      Hallo,  
        
      bei mir ist id eine Variable, deshalb auch kein ""  
        
            Gruß  
              piet  
        
      PS: Die Variable mit der "id" ist richtig gesetzt, sonst würde es unter Firefox und Konqueror nicht funktionieren.
      
      1. Hellihello

        getElementById("id")

        
        > >   
        > Hallo,  
        >   
        > bei mir ist id eine Variable, deshalb auch kein ""  
          
        Auf die "" kam es nicht an, das ist u.U. wurscht, wennd du id="id" oder sonstwas hast. Aber Groß und Kleinschreibung könnte schon eine Rolle spielen.  
          
        
        > PS: Die Variable mit der "id" ist richtig gesetzt, sonst würde es unter Firefox und Konqueror nicht funktionieren.  
          
        Naja, du willst es ja auch im IE haben, oder? Geh mal davon aus, dass Du die Sachen nur zu Teilen "richtig" gesetzt hast (s.o.)  
          
        Dank und Gruß,  
          
        frankx
        
        1. Morgen,

          das war mein Fehler.
          Ich hätte die Zeile aus dem Script kopieren sollen.
          Die lautet:

          document.getElementById(id).firstChild.nodeValue = wert;

          Die Groß/Kleinschreibung wird beachtet.

          Ich habe also in der Variable wert den richtigen Inhalt, der aber nicht auf die "id" geschrieben wird.

          Danke
                    piet

          1. Hi,

            document.getElementById(id).firstChild.nodeValue = wert;

            Ich habe also in der Variable wert den richtigen Inhalt, der aber nicht auf die "id" geschrieben wird.

            Hast du denn mal ueberprueft, ob das firstChild ueberhaupt das ist, was du erwartest ...?

            Der IE behandelt white space im DOM anders als die anderen Browser.

            MfG ChrisB

            1. Hi,

              Hast du denn mal ueberprueft, ob das firstChild ueberhaupt das ist, was du erwartest ...?

              Ich verstehe nicht ganz was du meinst ?
              Ich habe window.status = id; getestet und hier wäre es richtig muss ja auch es läuft ja unter den anderen Browsern.

              Der IE behandelt white space im DOM anders als die anderen Browser.

              »»
              Das wäre ein Ansatz. Meine id heißt : "M1_temperatur_5".
              Der "_" sollte doch kein Problem sein ??
              Ich könnte noch dafür sorgen hinten/vorne alle Leerzeichen zu löschen, falls vorhanden. Gibt es hier nicht unter JS einen eigenen Befehl. ??

              Danke
                    piet

              1. Hi,

                Hast du denn mal ueberprueft, ob das firstChild ueberhaupt das ist, was du erwartest ...?

                Ich verstehe nicht ganz was du meinst ?

                Du willst auf die Eigenschaft nodeValue des firstChilds eines Elements zugreifen.
                Was, wenn dieses Element gar kein firstChild hat, oder jenes wiederum von einem Typ waere, der keine nodeValue-Eigenschaft hat?

                Ich habe window.status = id; getestet

                Das hat damit nullkommanix zu tun.

                Der IE behandelt white space im DOM anders als die anderen Browser.
                »»
                Das wäre ein Ansatz. Meine id heißt : "M1_temperatur_5".
                Der "_" sollte doch kein Problem sein ??

                Ich rede von der Knotenstruktur im DOM, nicht von der ID deines Elements.

                MfG ChrisB

                1. Abend,

                  anbei ein wenig html. Ich beschreibe die einzelnen Tag's (Messwerte) per "id"

                  <table border="1" bgcolor="#FFD501">
                  <th colspan="2" width="120" bgcolor="#6DCEEE">Wasserst&#228;nde</th>
                  <tr>
                  <td align="right">SOLLpegel:</td>
                  <td id="M1_sollpegel" width="80" align="right">0.0 cm</td>
                  </tr>
                  <tr>
                  <td align="right">ISTpegel:</td>
                  <td id="M1_oberwasser" width="80" align="right">0.0 cm</td>
                  </tr>
                  <tr>
                  <td align="right">Drehzahl:</td>
                  <td id="M1_drehzahl" width="80" align="right">0.0 m</td>
                  </tr>
                  <tr>
                  <td align="right">Unterwasser:</td>
                  <td id="M1_unterwasser" width="80" align="right">0.0 cm</td>
                  </tr>
                  <tr>
                  </table>

                  Ich möchte ich per "id" auf die Tag's zugreifen. Ich befürchte "document.getElementById(id).firstChild.nodeValue = wert;" ist der falsche Weg.

                  Danke
                          piet

                  1. <td id="M1_unterwasser" width="80" align="right">0.0 cm</td>

                    ...

                    Ich möchte ich per "id" auf die Tag's zugreifen. Ich befürchte "document.getElementById(id).firstChild.nodeValue = wert;" ist der falsche Weg.

                    Doch das sollte mit diesen Quellcode gehen.

                    Struppi.

                    1. Hallo,

                      ich habe das Programm von plan_B eingefügt.
                      Es kommt keine Fehlermeldung.
                      Mein Programm funktioniert weiterhin unter dem Konqueror und Firefox, jedoch nicht unter IE.

                      Bitte um weitere Tip's

                      Gruß
                                piet

                      1. Mein Programm funktioniert weiterhin unter dem Konqueror und Firefox, jedoch nicht unter IE.

                        Dann liegt's am IE. Aber warum, läßt sich Anhand deines Codes nicht sagen.

                        Struppi.

                        1. Mein Programm funktioniert weiterhin unter dem Konqueror und Firefox, jedoch nicht unter IE.

                          Dann liegt's am IE. Aber warum, läßt sich Anhand deines Codes nicht sagen.

                          Struppi.

                          Hallo,

                          irgend etwas mit cache ausschalten oä. ??
                          gibt es hier nicht's

                          Gruß
                                  piet

                          1. irgend etwas mit cache ausschalten oä. ??

                            Ist das eine Ratestunde?

                            gibt es hier nicht's

                            Ohne zu wissen, was du tust, wird eine Problemlösung ausserordentlich schwierig

                            Struppi.

                            1. Hallo,

                              sorry.
                              Ich hole über Ajax Daten vom Server (über Perl) und zeige diese an.
                              Die Daten kommen aber im Script selbst an, denn wenn ich einen Datenwert auf die Statuszeile der Webseite schreibe wird dieser richtig angezeigt/aktualisiert, jedoch "document.getElementById(id).firstChild.nodeValue" zeigt keinen Wert an,
                              nicht ganz richtig, beim Aufruf der Seite wird der Wert richtig angezeigt. Der Wert wird nur nicht aktualisiert wenn sich der Wert am Server ändert.
                              Nochmals wie oben beschrieben.

                              1. Das Script startet und zeigt nach dem laden den aktuell richtigen Wert an

                              2. Die Werte werden vom Server geholt und kommen auch im Script an. (window.status = wert funktioniert)

                              3. "document.getElementById(id).firstChild.nodeValue" = wert
                                 funktioniert nicht, es wird immer nur der alte (nach onload) Wert angezeigt.

                              4. "document.getElementById("M1_reserve").firstChild.nodeValue" = wert funktioniert auch nicht, es wird immer nur der alte (nach onload) Wert angezeigt.

                              Ich vermute das alles richtig funktioniert, jedoch wird am IE die Seite nicht aktualiesiert bzw. der IE erkennt nicht das neue Daten gekommen sind. (über Ajax und Perl)

                              Ich habe nun versucht mit <meta http-equiv="cache-control" content="no-cache">
                              in der Webseite etwas zu bewirken, leider auch hier ohne Erfolg.

                              Bin für weitere Tip's dankbar.

                              Gruß
                                       piet

                      2. Hallo,

                        ich habe das Programm von plan_B eingefügt.
                        Es kommt keine Fehlermeldung.

                        erreicht der IE denn diese Stelle überhaupt? notfalls mal mit alert() oder deinem window.status  abfragen

                        oder dieses
                        node.firstChild.nodeValue = wert;

                        gegen diese Zuweisung austauschen

                        node.innerHTML = wert;

                        (das war jetzt mein letzter Vorschlag)

                        Gruß plan_B

                        --
                             *®*´¯`·.¸¸.·
                  2. Hallo,

                    Ich möchte ich per "id" auf die Tag's zugreifen. Ich befürchte "document.getElementById(id).firstChild.nodeValue = wert;" ist der falsche Weg.

                    was macht dich denn so sicher, dass es nicht schon früher einen Fehler gibt?

                    ausserdem würde es nicht schaden, ein paar Sicherheitsabfragen einzubauen

                      
                    var node = document.getElementById(id);  
                    if (! node) alert(" id existiert nicht: "+id)  
                    else if (! node.firstChild) alert(" kein firstChild für: "+id)  
                    else node.firstChild.nodeValue = wert;  
                    
                    

                    wenn man nicht weiterhin im Nebel rumstochern möchte

                    Gruß plan_B

                    --
                         *®*´¯`·.¸¸.·
                  3. Hi,

                    Ich möchte ich per "id" auf die Tag's zugreifen. Ich befürchte "document.getElementById(id).firstChild.nodeValue = wert;" ist der falsche Weg.

                    Laß Dir mal den nodeType des firstChild ausgeben.

                    cu,
                    Andreas

                    --
                    Warum nennt sich Andreas hier MudGuard?
                    O o ostern ...
                    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
              2. Hallo piet,

                bevor hier das heitere Fehlerraten noch bis ins nächste Jahr geht, solltest du mal einen Link zu deiner Testseite oder etwas relevanten Code posten. Eine Fehlerbeschreibung, die über "funktioniert nicht" hinaus geht, wäre auch nicht schlecht.

                Trotzdem rate ich mal mit: Das Element mit der id hat kein firstChild.

                Gruß, Jürgen

  2. Hi,

    Diese Seite funktioniert unter Firefox (/Win/Linux) sowie Konqueror,
    jedoch nicht unter win2k IE 6.0.2800.1106

    Der Fehler liegt beim beschreiben des Tag's.
    "document.getElementbyid(id).firstchild.nodevalue = wert"

    Das funktioniert _so_ garantiert nicht in den genannten Browsern, weil du den Umstand, dass JavaScript case sensitive mit Bezeichnern umgeht, gleich mehrfach ignorierst.

    MfG ChrisB