Concatenation: Javascript-Syntax durch Syntax erstellen
Borkert
- javascript
0 Florian Stascheck0 Borkert
0 Der Martin0 Borkert0 Der Martin0 Borkert
0 JürgenB
Auf einer Homepage befinden sich viele Input-Felder, die in einer quadratischen Form angeordnet sind.
Jede Zeile und jede Spalte beinhaltet gleich viele Input-Felder, die Anzahl der Zeilen und Spalten ist bekannt.
Das Name-Attribut der Input-Felder wurde per php automatisiert erstellt, und zwar ist es $Zeile."_".$Spalte.
Das dritte Input-Feld in Zeile 4 heißt also "4_3".
Nun würde ich gerne auf die verschiedenen Input-Felder zugreifen können.
Zu Testzwecken will ich sie mir per alert() ausgeben lassen.
Leider funktioniert das nicht so, wie ich es mir vorstelle.
<script>
var anzahl_z = 12;
var anzahl_sp = 30;
for (var z = 0; z <= anzahl_z; z++)
{
for (var sp = 0; sp <= anzahl_sp; sp++)
{
alert(document.formdata. + z + "_" + sp + .value;);
}
}
</script>
Ich würde mich über jede Hilfe bzw. über alternative Ansätze freuen!
Mfg,
Borkert
Hallo,
alert(document.formdata[z + "_" + sp].value;);
Erst mal so, du musst hier die Array-variante nehmen,
2. Eine gültige ID / ein gültiger Name beginnt nicht mit einer Zahl, alo nicht 4_3 sondern z.B. fld_4_3
3. document.getElementById ist moderner
mfg, Flo
Hallo Flo,
Erstmal vielen Dank für die Hilfestellung!
Hallo,
alert(document.formdata[z + "_" + sp].value;);
Erst mal so, du musst hier die Array-variante nehmen,
2. Eine gültige ID / ein gültiger Name beginnt nicht mit einer Zahl, alo nicht 4_3 sondern z.B. fld_4_3
Habe den Namen der input-Felder auf einen gültigen Namen geändert (z.B.: fld_4_5)
Leider wird mir folgender Fehler ausgegebe:
Fehler: document.formdata["fld_" + z + "_" + sp] is undefined
- document.getElementById ist moderner
Ok, werde ich mir mal anschauen!
Mfg,
Borkert
Hallo,
Das Name-Attribut der Input-Felder wurde per php automatisiert erstellt, und zwar ist es $Zeile."_".$Spalte.
Das dritte Input-Feld in Zeile 4 heißt also "4_3".
soweit ich weiß, dürfen die names nicht mit einer Ziffer beginnen - aber da bin ich nicht absolut sicher; bei ids ist es jedenfalls so.
alert(document.formdata. + z + "_" + sp + .value;);
Das geht natürlich nicht. Aber für solche Fälle gibt es ja alternative Adressierungsschemata (Schema 4).
So long,
Martin
Hallo Martin,
Vielen Dank für deine Hilfe!
soweit ich weiß, dürfen die names nicht mit einer Ziffer beginnen - aber da bin ich nicht absolut sicher; bei ids ist es jedenfalls so.
Habs bereits geändert.
alert(document.formdata. + z + "_" + sp + .value;);
Das geht natürlich nicht. Aber für solche Fälle gibt es ja alternative Adressierungsschemata (Schema 4).
document.forms["Formularname"].Eigenschaft
document.forms["Formularname"].Methode
Ziel = document.forms["Testformular"].action;
document.forms["Testformular"].reset();
Sehe ich das richtig, dass der Klammernausdruck den Namen des Formulars (Form) beinhaltet? Wie kann ich das bei inputnamen machen?
Was muss da dann vor der Klammer statt "forms" stehen?
document.formdata.["fld" + z + "_" + sp].value
Danke,
Borkert
Hallo,
document.formdata.["fld" + z + "_" + sp].value
entweder der Punkt (dann folgt der Feldname im Klartext), oder die Index-Klammern (dann kann der Feldname auch eine Variable oder ein zusammengesetzter Ausdruck sein).
Aber nicht beides.
Ciao,
Martin
Danke, habs jetzt so gelöst:
alert(document.getElementsByName("fld_" + z + "_" + sp)[0].value);
Hallo Borkert,
var anzahl_z = 12;
var anzahl_sp = 30;
for (var z = 0; z <= anzahl_z; z++)
13 Durchläufe!
for (var sp = 0; sp <= anzahl_sp; sp++)
31 Durchläufe!
Sollen es wirklich so viele sein? Sonst musst du die "<=" durch "<" ersetzen.
Gruß, Jürgen
Sollen es wirklich so viele sein? Sonst musst du die "<=" durch "<" ersetzen.
Danke Jürgen für deine Aufmerksamkeit!
Muss mir das - wenn es dann funktioniert - selber noch anschauen.
Hab irgendwie den Überblick verloren, weil ich inkonsistenterweise bei einigen Elementen ei 0 zu zählen beginnen und bei anderen nicht...
Lg, Borkert
Hab irgendwie den Überblick verloren, weil ich inkonsistenterweise bei einigen Elementen ei 0 zu zählen beginnen und bei anderen nicht...
Das war übrigens auch der Grund, warum es nicht funktioniert (von wegen undefiend) hat...
Jetzt klappt es!
Vielen Dank an alle für eure Hilfe!