Constantin: Textnodes im IE

Hallo,

kürzlich habe ich schonmal eine Frage hierzu gestellt, habe aber leider Lösung bekommen... das lag aber vielleicht auch daran, dass ich das Problem nicht ausreichend beschrieben habe. Diesmal mache ich es besser :)

Mein Problem ist, dass ich versuche in meinem JavaScript allen Textnodes des DOM-Trees eine neue Eigenschaft zuzuweisen z.B.:

node.nodePath = str;

diese Anweisung klappt bei mir im Firefox problemlos, im IE 7 führt diese Anweisung zu der JavaScript-Fehlermeldung:

Das Objekt unterstützt diese Eigenschaft oder Methode nicht.

Liegt das daran, dass die Textnodes (nodeType==3) im IE vielleicht davor geschützt sind, dass man ihnen solch eine Eigenschaft zuweist?
Hier ist ein kleines Test-Script, falls jemand den Fehler reproduzieren möchte:

getAllTextNodes = function(node) {

if (node.nodeType == 3) {
        var str = 'ein test';
        node.nodePath = str;

for (var i=0; i< node.childNodes.length; ++i) {
            getAllTextNodes(node.childNodes[i]);
        }
};
getAllTextNodes(document.body);

Ich wäre sehr froh, wenn mir jemand weiterhelfen könnte!

Constantin

  1. Hi Constantin,

    nodePath?

    Alle Eiegenschaften und Methoden des node Objekts

    Gruß
    Antipitch

    1. Hallo Antipitch!

      Diese Eigenschaft möchte ich ja (wie gesagt) hinzufügen!
      normalerweise geht das in JavaScript:

      var p = new Object;

      p.test = 'hallo';
      alert(p.test);

      Und im firefox erhalte ich (wie ebenfalls gesagt) die volle Funktionalität.

      Leider fehlt in meinem Testscript ein }. Das lauffähige Script lautet also:

      getAllTextNodes = function(node) {

      if (node.nodeType == 3) {

      var str = 'ein test';
               node.nodePath = str;

      }
               for (var i=0; i< node.childNodes.length; ++i) {
                   getAllTextNodes(node.childNodes[i]);
               }

      };
       getAllTextNodes(document.body);

      1. Hi Constantin,

        da war ich wohl noch nich ganz wach, ähem...

        Auch nochmal rumprobiert, Struppi hat wohl Recht. Falls du noch irgendwelche genaueren Infos dazu findest, wär's super, wenn du sie postest.

        Gruß
        Antipich

  2. Hallo Constantin,

    getAllTextNodes = function(node) {

    if (node.nodeType == 3) {
            var str = 'ein test';
            node.nodePath = str;

    for (var i=0; i< node.childNodes.length; ++i) {
                getAllTextNodes(node.childNodes[i]);
            }
    };
    getAllTextNodes(document.body);

    ich glaube, da fehlt eine "}".

    Gruß, Jürgen

    1. Hi Jürgen,

      ob ' oder " ist egal. Aber es fehlt ein }...

      Das lauffähige Script sieht eigentlich so aus:

      getAllTextNodes = function(node) {

      if (node.nodeType == 3) {

      var str = 'ein test';
               node.nodePath = str;

      }
               for (var i=0; i< node.childNodes.length; ++i) {
                   getAllTextNodes(node.childNodes[i]);
               }

      };
       getAllTextNodes(document.body);

  3. kürzlich habe ich schonmal eine Frage hierzu gestellt, habe aber leider Lösung bekommen... das lag aber vielleicht auch daran, dass ich das Problem nicht ausreichend beschrieben habe. Diesmal mache ich es besser :)

    Offensichtlich kann man einem Textknoten keine Eigenschaft im IE zufügen. Warum das so ist weiß ich nicht

    Struppi.