Schimmelreiter: getElementsByTagName im findet INPUT-Tags nicht zuverlässig

Hallo Leute,

myBodyNode.getElementsByTagName('INPUT') findet im IE die INPUT-Tags nicht zuverlässig. IE6 und IE7 verhalten sicht identisch. Im Firefox funktioniert es aber wie erwartet.

myBodyNode ist das Body-Node-Element eines IFrames im Designmode (Es funktioniert aber auch nicht bei Designmode='Off').

Wenn ich z.B. die Startseite von Google komplett in das Fenster kopiere geht es, wenn ich nur "[]Seiten aus Deutschland" reinkopiere geht es auch, wenn ich aber  "[]Seiten aus Deutschland" mehrmals hintereinander einfüge, findet getElementsByTagName die INPUT-Tags nicht.

Hat jemand einen Tipp, voran das liegt? Betrifft es auch andere Tags?

  1. Hallo Leute,

    Aloha 'oe,

    Wenn ich z.B. die Startseite von Google komplett in das Fenster kopiere geht es, wenn ich nur "[]Seiten aus Deutschland" reinkopiere geht es auch, wenn ich aber  "[]Seiten aus Deutschland" mehrmals hintereinander einfüge, findet getElementsByTagName die INPUT-Tags nicht.

    Hat jemand einen Tipp, voran das liegt? Betrifft es auch andere Tags?

    Ist dir klar, dass http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName ein Array liefert? Greifst du mit Schlüssel auf die Werte zu?

    Ansonsten poste relevanten Code zur Begutachtung.

    Gruß, Volker

    --
    „I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies."
    - Tony Hoare
    1. Dnke für den Tipp, das wars. Der Witz ist, das die Variante "falsch" eineigermaßen läuft, wenn die Name-Atrribute nicht gleich sind. Deshalb habe ich den Fehler nicht gelich entdeckt.

        
      <input id="a" name="A" value="a" type="radio"/>  
      <input id="b" name="A" value="b" type="radio"/>  
      <script >  
            var tags = document.getElementsByTagName('INPUT');  
        
            //fasch:  
            var tagnames = [];  
            for( tag_id in tags) tagnames.push(tags[tag_id].nodeName  +' '+ tags[tag_id].name);  
            alert(tagnames.join("\n"))  
        
            //richtig:  
            var tagnames = [];  
            for( tag_id=0;tag_id<tags.length; tag_id++) tagnames.push(tags[tag_id].nodeName +' '+ tags[tag_id].name);  
            alert(tagnames.join("\n"))  
        
      </script>  
      
      
      1. var tags = document.getElementsByTagName('INPUT');

        //fasch:
              var tagnames = [];
              for( tag_id in tags) tagnames.push(tags[tag_id].nodeName  +' '+ tags[tag_id].name);

        Damit durchläufst du alle Eigenschaften von tags. Du solltest dir auch mal anzeigen lassen, welcher Eigenschaften du da ermitteln möchtest.

        Struppi.