Finalplayer Ryu: Alle Einträge einer Auswahlliste mittels hidden-Feld übertragen

Ich hole mir über odbc E-Mail Adressen, diese sollen dann in einem Formular mit zwei Auswahllisten verarbeitet werden. In der linken Auswahlliste stehen am Anfang alle E-Mail Adressen, bei Klick auf eine Adresse wird diese mittels JavaScript in die rechte Auswahlliste eingefügt und aus der linken rausgelöscht, das gleiche funktioniert auch umgekehrt. Da ich alle Adressen aus der rechten Auswahlliste mit dem Formular übertragen möchte, will ich nun jedesmal wenn die etwas in die rechte Auswahlliste kommt, dass dieser Eintrag in das hidden-Field geschrieben wird und umgekehrt dann auch wieder gelöscht wird.

Hier nun der JavaScript Code:
function zur_rechten_Auswahlliste(index, value)
{
var new_option = new Option(value, value, false, false);
document.formsenden.rechts.options[document.formsenden.rechts.length] = new_option;
document.formsenden.links.options[index]=null;
document.formsenden.emails[document.formsenden.emails.length] = value;
}

function zur_linken_Auswahlliste(index, value)
{
var new_option = new Option(value, value, false, false);
document.formsenden.links.options[document.formsenden.links.length] = new_option;
document.formsenden.rechts.options[index]=null;
document.formsenden.emails[index]=null;
}

Beide Funktionen werden in der jeweiligen Auswahlliste mittels onchange aufgerufen, index und value entsprechen der E-Mail Adresse auf die geklickt wurde.

Das seltsame ist, wenn ich nun den Wert in das hidden-Feld emails schreibe und danach zum Test mittels
alert(document.formsenden.emails[document.formsenden.emails.length]);
ausgebe steht der richtige Wert drinnen, aber wenn ich nun
alert(document.formsenden.emails[0]);
schreibe steht "undefined"

Ich hoffe ihr könnt mir helfen oder vielleicht eine andere Möglichkeit nennen, mit der ich eine gesamte Auswahlliste übertragen kann.

  1. Ich hab mir jetzt nicht alles durchgelesen bzw. verstanden, aber ich denke mal das Problem ist folgendes...

    document.formsenden.emails.length

    enthält die Anzahl der Elemente.. z.B. 8

    Wenn du nun das 8 Element abfragen willst mit..

    alert(document.formsenden.emails[document.formsenden.emails.length]);

    was ja für mein Beispiel gleichzusetzen ist mit

    alert(document.formsenden.emails[8]);

    Wird er undefined ausgeben, weil die Zählweise von 0-7 ist.

    alert(document.formsenden.emails[0]);
    .
    .
    alert(document.formsenden.emails[7]);

    Wird gehen.. 8 allerdings nicht. Aber ich denke du willst damit eh ganz was anderes erreichen und hast da n Denkfehler. :)

    Schöne Grüße

    1. Ich hab mir jetzt nicht alles durchgelesen bzw. verstanden, aber ich denke mal das Problem ist folgendes...

      document.formsenden.emails.length

      enthält die Anzahl der Elemente.. z.B. 8

      Wenn du nun das 8 Element abfragen willst mit..

      alert(document.formsenden.emails[document.formsenden.emails.length]);

      was ja für mein Beispiel gleichzusetzen ist mit

      alert(document.formsenden.emails[8]);

      Wird er undefined ausgeben, weil die Zählweise von 0-7 ist.

      alert(document.formsenden.emails[0]);
      .
      .
      alert(document.formsenden.emails[7]);

      Wird gehen.. 8 allerdings nicht. Aber ich denke du willst damit eh ganz was anderes erreichen und hast da n Denkfehler. :)

      Schöne Grüße

      Wenn du mein Problem nicht verstehst und gar nicht erst alles durchgelesen hast, dann bitte auch keine unqualifizierten Antworten.

      Das eigentliche Problem ist, dass ich dem hidden-Feld emails zwar mit
      document.formsenden.emails[document.formsenden.emails.length] = value;
      einen Wert zuweisen kann und diesen dann auch mit
      alert(document.formsenden.emails[document.formsenden.emails.length] = value);
      ausgeben kann, aber mit
      alert(document.formsenden.emails[0]);
      bekomme ich undefinded raus,
      wenn ich nun das formular abschicke ist das hidden-Feld emails aber vollkommen leer.

      1. Habe selber eine Lösung für mein Problem gefunden:
        1. Ein Hidden-Feld kann anscheinend nur einen String aufnehmen, keine Ahnung ob das stimmt, wird aber wohl so sein.

        2. Wenn ich auf den submit-Button drücke, fülle ich einfach ein Array mit den E-Mail-Adressen und wandle es mittels join zu einem String, welche an das hidden-Feld übergeben wird, siehe dazu:
        http://de.selfhtml.org/javascript/objekte/array.htm#join

        3. Danach löse ich es Serverseitig mit der php-Funktion explode auf:
        http://de3.php.net/manual/de/function.explode.php

        Danke an alle die sich zumindest die Mühe gemacht haben sich mein Problem durchzulesen und über eine Lösung nachgedacht haben.