[GastForen Programmierung/Entwicklung JavaScript Formulare nebeneinander

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Formulare nebeneinander

Larvarin
Beiträge gesamt: 53

16. Dez 2004, 18:44
Beitrag # 1 von 3
Bewertung:
(659 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich möchte gern eine Webseite erstellen mit Fragen deren Antworten man in Felder eingibt. Ich sag gleich worums genau geht, damits klarer wird: Ich mache eine Tabelle in der in jeder Zeile ein Nomen angegeben ist. Vor das Nomen soll ein Feld kommen für den artikel (also der die das, je nachdem was zum Nomen passt) und nach dem Nomen ein Feld in das man das Plural eingeben kann. Die Loesungen sind in einem Array gespeichert, und nach jedem Feld hat es einen Knopf mit dem man die Loesung im entsprechenden Feld anzeigen lassen kann.
Ich muss die Lösungen für die Artikel und die Lösungen für die Pluralformen in separaten Arrays haben, (weil ich sie gleichmässig durcheinander mischeln will. Ausser jemand hat einen Vorschlag wie ich jeweils zwei Objekte des gleichen Arrays zusammen lassen kann, siehe thread "Zufallsgenerator")

Jedenfalls, wenn ich den ersten "Zeige Lösung"-Knopf einer Zeile druecke, erscheint die Lösung richtig im ersten Feld. Wenn ich aber den zweiten Knopf drücke, dann erscheint die zweite Lösung im ersten Feld, statt im zweiten. Wie kann ich also zwei Felder auf der gleichen Zeile haben, die beide unterschiedliche Lösungen haben, und zwei Knöpfe, die je eine richtige Lösung ins richtige Feld tun?

Hier ist die Funktion die ich benutze. Show() wird aufgerufen wenn man auf den ersten Knopf drückt, schreibt also die Lösung (aus dem Array "wert") ins erste Feld:
(Danach springt der Fokus auf ein anderes Feld. Das macht er damit eine Funktion aufgerufen wird die die Lösung erkennt, das ist hier aber nicht so relevant.)

function show(i){
var a = i;
document.forms[0].elements[a].value=wert;
document.forms[0].elements[a].focus();
document.forms[0].elements[a+1].focus();
}

Beim zweiten Feld versuchte ich die Funktion einfach etwas abzuändern, indem ich das Programm auf ein anderes array (wert2) zugreifen lasse.

function show2(i){
var a = i;
document.forms[0].elements[a].value=wert2;
document.forms[0].elements[a].focus();
document.forms[0].elements[a+1].focus();
}

Und so sieht eine Zeile auf meiner Seite aus: (die Funktion aus() korrigiert den Wert)

<tr><td><INPUT onblur=aus(0); name=T1 size=3> Nomen </td><td><IMG onclick=show(0) src="show.GIF"></td><td>Plural: <INPUT onblur=aus2(0); name=T1 size=6> </td><td><IMG onclick=show2(0) src="show.GIF"></td></tr>



Aber wie gesagt: die Lösung wird auch wieder ins erste Feld geschrieben. Es hat wahrscheinlich etwas damit zu tun dass i bei beiden gleich ist (im ersten Feld kommt das erste element vom "wert"-array rein, im zweiten das erste element von "wert2")
Ich glaube auch, dass ich nicht so ganz kapiere wie man genau definiert welches Feld gement ist, mit document.forms[0].elements[a] und so.
X

Formulare nebeneinander

Markus Walker
Beiträge gesamt: 494

22. Dez 2004, 09:05
Beitrag # 2 von 3
Beitrag ID: #131964
Bewertung:
(659 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Lavarin

Du sprichst mit Deinen beiden Funktionen ja auch das selbe Feld an.

document.forms[0].elements[a].value

Bedeutet das betreffende Dokument, das erste Formular in diesem Dokument, das erste Feld in diesem Formular.

Das Problem mit den beiden zusammen gehörenden Elementen könnte mit einem zweidimensionalen Array gelösst werden. Gemischelt würde dann nur die erste Dimension.

HTH


als Antwort auf: [#131052]

Formulare nebeneinander

Larvarin
Beiträge gesamt: 53

22. Dez 2004, 17:19
Beitrag # 3 von 3
Beitrag ID: #132096
Bewertung:
(659 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke, ich habs jetzt auch so geloest, mit 2D-Arrays. :) Mein Problem vorhin war dass ich einfach weiterhin den code benutzte der galt wenns 1 Feld pro Array-element hatte, (jetzt sind's zwei, da zweidimensional) und dann stimmte die Feld-Nr nicht mehr mit dem Feld überein.


als Antwort auf: [#131052]