Markus Treiber: Lange Selectbox löschen (IE/Moz)

Hallo zusammen,

leider wurde das "ursprüngliche Thema" bereits ins Archiv verschoben, und dort kann man ja bekanntlicher Weise nicht antworten.

[link=http://forum.de.selfhtml.org/archiv/2007/3/t147749/#m958308]

Neue Erkenntnis:

Ich habe das Problem gefunden, weiss aber nicht, wie es zu lösen ist. In meinem Formular befinden sich diverse DIVs zur Positionierung von Elementen. So ist z.B. das besagte Select-Objekt innerhalb eines Div-Objektes namens "form2". Wie kann man nun die object.ReplaceChild Methode anwenden, damit dies funktioniert?

Hier der Auszug aus dem HTML-File:

<form name="frm" id="frm">
  <div name="form2" id="form2">
   <select name="Auswahl" id="Auswahl">
     <option value="test">hallo</option>
   </select>
  </div>
</form>

Hier der Auszug aus dem Javascript

var sneu=document.createElement("select");
var salt=document.frm["mat_select"];

for (var i = 0; i < 5; i++)
{
  var neuer_eintrag = new Option(i,i,false,false);
  sneu.options[sneu.length] = neuer_eintrag;
}

//?????
//salt.form.replaceChild(sneu,salt);
salt.form.replaceChild(sneu,document.frm.form2.document.mat_select);
//Dies ist die Problem-Zeile...

sneu.name=salt.name;
sneu.id=salt.id;
sneu.onchange=salt.onchange;

[...]

  1. hi,

    Wie kann man nun die object.ReplaceChild Methode anwenden, damit dies funktioniert?

    Welche Verständnisprobleme hast du denn mit der Beschreibung der Methode replaceChild?

    salt.form.replaceChild(sneu,document.frm.form2.document.mat_select);
    //Dies ist die Problem-Zeile...

    Und wo ist die Problembschreibung?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Moin

    was verbirgt sich hinter

    "mat_select"

    ?

    Gruß
    rfb

    --
    Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
    (Galileo Galilei)
  3. Also, ich habe bei dem Beispiel-code mein Original und die Beispiel aus dem alten Thread durcheinander gebracht, sorry.

    mat_select ist das Select-Objekt, das im Beispiel mit Auswahl angesprochen wird.

    Das Problem ist, dass ReplaceChild funktioniert
    => salt.form.replaceChild(sneu,salt);

    wenn kein DIV innerhalb der Form steht. Nun habe ich dummerweise das Probl., dass ich DIVs zur Positionierung brauchen, und bekomme den ReplaceChild-Befehle nicht mehr hin. Es kommt immer: Node not found.

    Danke für eurer Mühen...

    1. Moin

      Das Problem ist, dass ReplaceChild funktioniert
      => salt.form.replaceChild(sneu,salt);

      was einfach daran liegen dürfte, dass das select-Element kein direktes Kind (_Child_) des Formulars sondern des DIVs ist

      Gruß
      rfb

      --
      Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
      (Galileo Galilei)
    2. Moin

      vergaß zu bemerken:

      Nun habe ich dummerweise das Probl., dass ich DIVs zur Positionierung brauchen

      du kannst andere Elemente genau so positionieren, CSS funktioniert nicht nur mit DIVs.

      Gruß
      rfb

      --
      Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
      (Galileo Galilei)
  4. Problem gelöst...

    Folgende Möglichkeiten...

    1. Anstelle v. ReplaceChild (InsertBefore+RemoveNode) nutzen
    2. Span-Element um das Select-Objekt und mit innerHTML das komplette Select austauschen.

    Mit beiden Varianten funktioniert das Löschen und neu Aufbauen des Select-Objekt mit mehreren Tausend Options in unter 30 Sek.

    Wenn jemand ein ähnliches Problem hat, einfach per mail melden.