FF 1.5 und Jacascript-Probleme

  • Mit FF 1.4 hat es noch funktioniert, aber mit FF 1.5 nicht mehr. Es geht um ein namenloses Formular auf einer Webseite, dem ich mit Greasemonkey einen Namen verpassen möchte.

    Das Formular ist das dritte Formular in dem Dokument, aber um sicher zu gehen, identifiziere ich es nicht durch die Nummer, sondern durch bestimmte Merkmale und hangele mich von dort über "parentNode"-Befehle bis zum FORM-Tag hoch. Dann setze ich den Namen "MeineForm", überprüfe den Namen und versuche, das Formular über den neuen Namen anzusprechen:

    kn = kn.parentNode; // <FORM> gefunden
    kn.setAttribute("name", "MeineForm");
    alert(document.forms[2].getAttribute("name"));
    alert(document.MeineForm);
    alert(document.forms["MeineForm"]);

    Das erste alert liefert korrekt "MeineForm".
    Das zweite und dritte alert liefert jedoch "undefined"! :evil:

    Kann jemand mir das erklären?

    (Bitte keine Vorschläge für Workarounds, ich habe noch andere Probleme dieser Art mit den Formularfeldern, deshalb möchte ich erst mal dieses Problem LÖSEN.)

  • Zitat von DeckMan

    Klappt's vielleicht mit
    <code>alert(document.getElementsByName('MeineForm'));</code>
    ?


    Nein, auch nicht.

    kn ist der Node der Form.

    kn.setAttribute("name", "MeineForm");
    alert(kn);
    // ergibt: [object XPCNativeWrapper [object HTMLFormElement]]

    alert(document.forms[2].getAttribute("name"));
    // ergibt: MeineForm

    alert(document.getElementsByName('MeineForm'));
    // ergibt: [object XPCNativeWrapper [object HTMLCollection]]

    Warum ist das selbe Element einmal HTMLFormElement und dann HTMLCollection? Ich habe eben mal gegoogelt, was HTMLCollection ist, bin aber aus den Beschreibungen nicht schlau geworden.

  • argh, natürlich... wie schon das "s" in "Elements" sagt... :oops:

    Also, mit [0] hintendran funktioniert es. Was aber nichts daran ändert, dass die bereits genannten Befehle nicht funktionieren. Ich kapier's einfach nicht, schließlich funktionieren die Beispiele in SelfHTML ja auch noch.

    Das ist zwar jetzt nicht mehr so wichtig, weil ich die FORM inzwischen über eines ihrer Elemente identifiziere, das eine ID hat - aber andererseits würde mich die Lösung dieses Rätsels doch mal interessieren...