Ralf Hoppe: Array als input name?

Hallo liebe ForumerInnen,

irgentwie verzwick ich mich da in ein grausames Problem.

http://members.chello.at/r.hoppe/tipformular.htm

dies ist ein Tipformular, wird keinen weiter interessieren, wofür das notwendig ist, daher KOMM ZUR SACHE, MEISER!!! *g*

Wenn man den Source-code anschaut, sieht man gleich, boa ey, verdammt lang, wenn man bedenkt, dass es nicht 5 Spiele, sondern eigentlich 25 Spiele sein sollten.

Die Funktionen spiel1(i) bis spiel5(i) sagen eigentlich alle das selbe aus, nur, da die namen alle verschieden sein sollten, muss ich auch immer eine neue funktion laufen lassen.

Nun hab ich an einen Array (2 Dimensional) gedacht, aber kann ich einen Array (z.B. spst[5][1])
als name eines inputs verwenden document.tipform.spst[5][1].value???

hmm, wer jetzt immernoch liest, und sich nicht schon dachte "bleib doch allein mit dem Zeug" dem danke ich erstmal! Wenn ihm(r) auchnoch was einfällt dazu, dann wäre das elendssuper!!

besten Dank im voraus
und ... volle kanne hoschie

Ralf Hoppe

  1. Hallo Ralf,

    irgentwie verzwick ich mich da in ein grausames Problem.

    Oh ja, dass ist wirklich grausam. Deshalb habe ich mir die Freiheit genommen und deine Funktionen so umgeschrieben, daß eine einzige Funktion alles erledigt.

    Ich hoffe, ich habe keine Werte vertauscht:

    function spiel(i,wann)
    {
    eingabe = document.tipform["spieltag"+wann].selectedIndex;   /*auslesen der Liste*/

    for (var j=0;j<(document.tipform["spieltag"+wann].length-1);j++) /*Schleife zum Setzen der Felder*/

    if (j==eingabe)
    document.tipform["st"+(j+1)+"sp"+wann].value=i;
    else
    document.tipform["st"+(j+1)+"sp"+wann].value="";

    /*Setzen der versteckten Felder*/
    if (eingabe!=(document.tipform["spieltag"+wann].length-1))
    document.tipform["sp"+wann].value= "Sp"+wann+"__"+i;
    else
    document.tipform["sp"+wann].value= "......";

    }

    Diese Funktion ist für alle Spiele gültig. Du rufst sie einfach mit:
    spiel(1,1)
    spiel(1,2) etc. auf.

    Kurz zur Funktionsweise:

    Du übergibst der Funktion die Parameter i und den Parameter wann (=Spieltag).

    Innerhalb der Funktion passiert jetzt folgendes:

    Die richtige Liste wird anhand des Spieltages ausgewählt
    und deren selktierten Wert in "eingabe" gespeichert. Dann geht alles in eine Schleife. Die vergleicht jetzt den Zähler mit "eingabe". Sind beide gleich, wird das zugehörige Feld mit dem  Wert i belegt, j+1 in der Schleife, da du mit 1 beginnst.
    Die Schleife endet automatisch in Abhängigkeit von der Länge der Auswahliste.
    Zum Schluß werden noch die versteckten Felder gesetzt und das war es. Jetzt brauchst du dich in Zukunft nur noch um die Formulare kümmern, daß die weiterhin so sorgfältig gemacht werden.

    Viele Grüße

    Antje

    1. Hallo Antje,

      auch wenn es sein kann, dass du es gar nicht mehr liest (weil die Frage schon ins Nirvana des Archives verschwindet):

      ALLERBESTEN DANK, du bist ein Schatz (wenn ich es sagen darf)

      schöne Grüsse

      Ralf