[gelöst] Formular per JS umbenennen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [gelöst] Formular per JS umbenennen

    Ich bin gerade auf ein etwas seltsames Verhalten gestoßen. Ich kann ja per name den Namen eines Formulars ändern. Aber warum kann ich dann sowohl mit dem alten als auch mit dem neuen Namen auf Elemente des Formulars zugreifen?
    PHP-Code:
    <form name="blubb" action="test.php" method="post">
      <
    input type="text" size="40" name="eingabe" value="1">
      <
    input type="submit" value="Absenden">
    </
    form>
    <
    script type="text/javascript">
    document.blubb.name 'blubber';
    alert (document.blubb.eingabe.value);
    alert (document.blubber.eingabe.value);
    </
    script
    In beiden Fällen bekomme ich den korrekten Wert ausgegeben. Eigentlich sollte
    PHP-Code:
    alert (document.blubb.eingabe.value); 
    aber nicht mehr funktionieren, da ich das Formular über das name-Attribut ansteuer. Habe ich etwas übersehen oder ist das eine der üblichen Merkwürdigkeiten von JavaScript?

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

  • #2
    Ich nehme mal an, dass document.blubb nur eine Referenz auf das Formular ist, d.h. gar nichts mehr mit dem eigentlichen Namen zu tun hat. Nur ulkig, dass zweiteres dann geht.
    Würde eh nie so auf ein Formular zugreifen...

    Kommentar


    • #3
      Hallo Peter,

      da es einmal ins DOM gewandert ist und als eine Art Expando-Property angelegt wurde, bleibt es auch da. Die Umbenennung ist intelligent genug, eine Kopie unter dem neuen Namen ins DOM einzubauen, löscht aber die alte Referenz offenbar nicht. Da delete sowieso fast nie das tut, was man erwartet, find ich dieses Verhalten jetzt nicht so merkwürdig.

      Gruß,

      Anja
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        Zitat von AmicaNoctis Beitrag anzeigen
        Hallo Peter
        Hallo Schatzi
        Zitat von AmicaNoctis Beitrag anzeigen
        da es einmal ins DOM gewandert ist und als eine Art Expando-Property angelegt wurde, bleibt es auch da.
        Eigentlich sollte das Attribut aber überschrieben werden. Naja, ist halt JavaScript
        Zitat von AmicaNoctis Beitrag anzeigen
        Die Umbenennung ist intelligent genug, eine Kopie unter dem neuen Namen ins DOM einzubauen, löscht aber die alte Referenz offenbar nicht.
        Das wird es wohl sein.
        Zitat von AmicaNoctis Beitrag anzeigen
        Da delete sowieso fast nie das tut, was man erwartet, find ich dieses Verhalten jetzt nicht so merkwürdig.
        Wenn du den delete-Operator meinst, so hat der doch damit gar nichts zu tun.

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Zitat von Kropff Beitrag anzeigen
          Wenn du den delete-Operator meinst, so hat der doch damit gar nichts zu tun.
          Naja doch, ich hatte meinen Gedanken nur nicht vollständig geäußert. Also: beim Laden der Seite wandert die Referenz auf das Formular unter anderem als Expando-Property ins document-Objekt. Beim Umbenennen wird eine weitere Referenz unter dem neuen Namen hinzugefügt. Angenommen, der Browser würde dann die alte Referenz mit derselben Routine behandeln, wie sie für delete verwendet wird, wundert es mich nicht, dass sie trotzdem noch da ist, weil der delete-Operator ja auch nicht so funktioniert, wie man es erwarten könnte.

          Imho kann es aber sein, dass ein paar Minuten später das Formular nicht mehr unter dem alten Namen erreichbar ist, weil der GC es inzwischen entsorgt hat.

          Gruß,

          Amica
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar

          Lädt...
          X