Poldi: Tip zum Hinzufügen und Löschen von Options bei Selectboxen

Hi!

Ich hatte einige Probleme beim Hinzufügen von Options zu Selectboxen und auch im Archiv ein paar Unbeantwortete Fragen gefunden. Nun denke ich mir, daß es vielleicht den einen oder anderen interessiert,
was ich herausgefunden habe:

Hinzufügen geht so: (steht auch bei SelfHtml, hier nur nochmal zwecks Zusammenhang):

function Hinzufuegen()
  {
   NeuerEintrag = new Option(document.Testform.neu.value);
   document.Testform.Auswahl.options[document.Testform.Auswahl.length] = NeuerEintrag;
   document.Testform.neu.value = "";
  }

Entfernen so:

function Loeschen()
  {
   document.Testform.Auswahl.options[document.Testform.Auswahl.length-1] = null;
   history.go(0);
  }

Dabei tauchen einige Probleme auf: So funktioniert das Entfernen im IE nicht. Läßt man aber das
history.go(0) weg, dann geht's. Wozu ist das dann überhaut gut?

Ich würde empfehlen, in beiden Funktionen noch folgendes Einzubauen:

if (document.layers) {
       history.go(0);
       }

So wird das history.go(0) nur bei Netscape ausgeführt. Netscape paßt nämlich (im Gegensatz zum IE)
die Breite der Selectbox nicht an, wenn man neue Elemente hinzufügt. Um dies zu erreichen benötigt man einen Reload.

Ich hoffe, das hilft irgendwem und wenn mal irgendwann wer (so wie ich) im Archiv nach dieser Sache sucht, so findet er hoffentlich meinen Beitrag :-)

Gruß

Poldi.

  1. Hi Poldi!

    Dabei tauchen einige Probleme auf: So funktioniert das Entfernen im IE nicht. Läßt man aber das
    history.go(0) weg, dann geht's. Wozu ist das dann überhaut gut?

    Ich würde mal sagen, Netscape kommt nicht damit zurecht, das Option einfach auf null zu setzen. Durch history.go(0) wird dann einfach ein Reload erzwungen, nach dem bei Netscape einfach alles auf den Startwert gesetzt wird, bei IE aber nicht - dieser merkt sich das Option.
    Versuch übrigens auch mal folgendes, müsste auch funktionieren:
    document.Testform.Auswahl.length--;
    Die Eigenschaft "length" in Arrays ist nämlich seltsamerweise nicht schreibgeschützt.

    MfG Simon

    1. Hi!

      Ich würde mal sagen, Netscape kommt nicht damit zurecht, das Option einfach auf null zu setzen. Durch history.go(0) wird dann einfach ein Reload erzwungen, nach dem bei Netscape einfach alles auf den Startwert gesetzt wird, bei IE aber nicht - dieser merkt sich das Option.
      Versuch übrigens auch mal folgendes, müsste auch funktionieren:
      document.Testform.Auswahl.length--;
      Die Eigenschaft "length" in Arrays ist nämlich seltsamerweise nicht schreibgeschützt.

      Oh!
      Das ist allerdings interessant und man kann es sicher mal brauchen.
      Nur wird damit halt in diesem Falle nur das letzte Element entfernt. Ich möchte aber das Element entfernen, das selektiert wurde.

      Grüße

      Poldi.