Mssmar: createTextNode

Hi,

Ich rufe die untenstehende Funktion auf um in einem DIV eine Fehlermedung rauszugeben.

Das Problem ist, das die in FFOx nicht funktioniert und ich kann iregendwie den Fehler nicht sehen bzw. finden.

  
function errorMessage() {  
   var TxtNode = document.createTextNode("Fehler Fehler Fehler");  
   var ReplaceNode = Container.childNodes(0);  
   ReplaceNode.replaceNode(TxtNode);  
   Container.style.background ='#ff0000';  
   Container.style.width ='200px';  
}  
  
<div id="Container"><p></p></div>  

Die Firefox-Kosole gibt folgendes aus:

"Fehler: TxtNode.childNodes is not a function"

Ich bin für jede Hilfe sehr dankbar.

Gruß
Messmar

  1. Hi,

    "Fehler: TxtNode.childNodes is not a function"

    gehört der Fehler genau so zu obigem Code? Ich hätte Container.childNodes is not a function erwartet:

    var ReplaceNode = Container.childNodes(0);

    Du rufst gerade die Methode childNodes mit Parameter 0 auf - die gibts nicht. childNodes ist eine Collection, wenn du auf ihre Elemente zugreifen willst, dann musst du eckige Klammern benutzen, wie dir auch das entsprechende SELFHTML-Beispiel zeigt.

    MfG
    Rouven

    --
    -------------------
    ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
    1. Hi,

      danke schon mal.

      "Fehler: TxtNode.childNodes is not a function"
      gehört der Fehler genau so zu obigem Code? Ich hätte Container.childNodes is not a function erwartet:

      ja.

      Aber ich muss dazu meinen Code korregieren und zwar anstelle von:

        
      oSpan.childNodes(0);  
      
      

      muss es heißen:

        
      document.getElementById('oSpan').childNodes(0);  
      
      

      var ReplaceNode = Container.childNodes(0);
      Du rufst gerade die Methode childNodes mit Parameter 0 auf - die gibts nicht. childNodes ist eine Collection, wenn du auf ihre Elemente zugreifen willst, dann musst du eckige Klammern benutzen [...]

      Ich habe es angepasst, aber ich bekomme jetzt folgendes:

      "Fehler: oReplaceNode.replaceNode has no properties"

      Irgendeine Idee?

      GRuß
      Messmar

      1. "Fehler: oReplaceNode.replaceNode has no properties"
        Irgendeine Idee?

        Ja, oder eher nein. Was ist replaceNode? Ich hätte nur replaceChild im Angebot. Könnte es sein, dass das eine neue DOM-Version ist?

        MfG
        Rouven

        --
        -------------------
        ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
        1. Hi,

          [...]Könnte es sein, dass das eine neue DOM-Version ist?

          Das habe ich mi Netz gefunden. Für replace:

          replaceNode

          Gruß
          Messmar

          1. Hallo Mssmar.

            replaceNode

            Diese Seite bestätigt meine Vermutung: du arbeitest ausschließlich mit document.all und verschaffst dir damit selbst nur Schwierigkeiten.

            Du solltest besser das echte DOM nutzen, wozu unter anderem auch das http://de.selfhtml.org/javascript/objekte/node.htm@title=node-Objekt und seine Methoden gehört.

            Einen schönen Sonntag noch.

            Gruß, Ashura

            --
            sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
            „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
            [HTML Design Constraints: Logical Markup]
          2. Hi,

            Das habe ich mi Netz gefunden. Für replace:
            replaceNode

            solange man es unter http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247 nicht findet, kann Dir völlig egal sein, was Sekundärliteratur behauptet.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
          3. Hi,

            replaceNode

            lol, genau da bin ich gerade gelandet als ich nach deinem Post den Befehl nachgeschlagen habe...
            Diese Seite sagt, dass das eine Microsoft-spezifische DOM-Erweiterung ist.

            MfG
            Rouven

            --
            -------------------
            ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
        2. Hi All,

          [...]Ich hätte nur replaceChild im Angebot. [...]

          Das mit dem replaceChild funktioniert auf jeden Fall.

          Danke und Gruß
          Messmar

  2. Hallo,

    var ReplaceNode = Container.childNodes(0);
    "Fehler: TxtNode.childNodes is not a function"

    da hat er Recht, der Firefox. Mit der obigen Anweisung versuchst du ja schließlich, TxtNode.childNodes() als Funktion aufzurufen. Das geht natürlich nicht.
    Meintest du stattdessen vielleicht die Indizierung mit eckigen[] Klammern?

    So long,
     Martin

    --
    Most experts agree: Any feature of a program that you can't turn off if you want to, is a bug.
    Except with Microsoft, where it is just the other way round.
    1. Hallo,

      Meintest du stattdessen vielleicht die Indizierung mit eckigen[] Klammern?

      Ja, das stimmt. Ups
      Ich versuche auf das erste Element des Div zuzugreifen und zwar auf das
      das Paragrph-Element: <p></p>

      Gruß
      Mesmar

      1. Ja, das stimmt. Ups
        Ich versuche auf das erste Element des Div zuzugreifen und zwar auf das
        das Paragrph-Element: <p></p>

        Und du bist sicher das immer der erste Knoten das p Tag ist?
        Nein bist du nicht, warum nimmst du nicht [object].getElementsByTagName('p'); dann kannst du sicher sein, dass du das erste p Element erwischst.

        Struppi.

        --
        Javascript ist toll (Perl auch!)
  3. Hallo Mssmar.

    function errorMessage() {
       var TxtNode = document.createTextNode("Fehler Fehler Fehler");
       var ReplaceNode = Container.childNodes(0);
       ReplaceNode.replaceNode(TxtNode);
       Container.style.background ='#ff0000';
       Container.style.width ='200px';
    }

    
    >   
    > ~~~html
    
    <div id="Container"><p></p></div>  
    
    > 
    
    

    Dir ist bewusst, dass du hier zum Zugriff auf das div-Element http://de.selfhtml.org/javascript/objekte/all.htm@title=document.all verwendest?
    Du solltest http://de.selfhtml.org/javascript/objekte/document.htm#get_element_by_id@title=getElementById nutzen, um dies zu bewerkstelligen.

    Einen schönen Sonntag noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]
    1. Hallo Mssmar.

      Dir ist bewusst, dass du hier zum Zugriff auf das div-Element http://de.selfhtml.org/javascript/objekte/all.htm@title=document.all verwendest?
      Du solltest http://de.selfhtml.org/javascript/objekte/document.htm#get_element_by_id@title=getElementById nutzen, um dies zu bewerkstelligen.

      Jau, du hast Recht. Das habe ich aber in dem nachfolgenden Posting auch hier korregiert.

      GRuß
      Messmar