[JS] problem beim auslesen dynamischer input fields

F

freaksta

Mitglied
Thread Starter
Dabei seit
22.02.2007
Beiträge
43
Reaktionspunkte
0
hallo nochmal!

ich beiss hier gleich in die tastatur...ich weiss einfach nicht warum er diesen fehler macht.

es ist folgendes. über javascript kann ich beliebig input fields zu einem formular hinzufügen. diese fields haben dann namen wie folgt:

anf_0
anf_1
anf_2 ...usw

nun wollte ich die values auslesen. dabei wollte ich folgenden code benutzen:

Code:
[I]//textSrc soll dann den durchformatierten Inhalt der Input Fields wiedergeben[/I]
        textSrc = "<ui>";
        
        for (var i = 0; i < firstCount + 1; i++) {
        	
[I]//hier baue ich mir den namen besser gesagt den "Befehl" zusammen zum auslesen des betreffenden feldes[/I]
        	var get = "document.step_1.anf_" + i + ".value";

[I]//bei der ausgabe sieht man dann dass er das get nicht als befehl sondern weiterhin als string behandelt und einsetzt.[/I]
        	textSrc = textSrc + "<li>" + get + "</li>";
        }
        
        textSrc = textSrc + "</ui>";

der befehl als solcher funzt...das habe ich schon getestet. es funktioniert auch wenn ich es manuel einschreibe in eine ausgabe...aber das ist natürlich nicht sinnvoll, weil ich ja nicht weiss wieviele felder ich schlussendlich habe.

weiss evtl einer rat warum der des falsch interpretiert?
 
Solche Problembescheibungen liebe ich. Mit Kommentiertem Quelltext, wo auch in den Kommentaren steht, was nicht richtig läuft :D Sollte man sich ein Beispiel dran nehmen...


Du hast dein Problem schon erkannt.
Der Befehl wird als String erkannt. Und er ist auch ein solcher.

Den Zugriff auf die einzelnen Input-Felder kannst Du aber auch anders machen:

Wie, das steht hier:
http://de.selfhtml.org/javascript/objekte/elements.htm

Statt mit dem Festen Namen drauf zuzugreifen, greifst Du auf das "elements"-Objekt wie auf ein Array zu.

Das würde dann etwa so aussehen:

PHP:
//textSrc soll dann den durchformatierten Inhalt der Input Fields wiedergeben
        textSrc = "<ui>";
        
        for (var i = 0; i < firstCount + 1; i++) {
        	

//Der Klarheit halber splitte ich das mal in mehrere Zeilen auf
        	textSrc = textSrc + "<li>";
                textSrc = textSrc + document.forms["step_1"].elements["anf_" + i].value;
                textSrc = textSrc + get + "</li>";
        }
        
        textSrc = textSrc + "</ui>";

Befehle zuerst als String zusammenbauen kann man schlichtweg nicht.



gruß
Lukas

Gut, man kann via doch Strings als Befelh zusammenbauen, muss sie dann aber mit eval() interpetrieren... aber das zu tun ist weitaus schlimmer als schlechte Programierstil :)
 
haha :) danke für dein lob - weiss ja selber nur zu gut wie es is ein problem zu behandeln wenn man dann nicht mal code vor der nase hat!

genau sowas habe ich gesucht! Sensationell! :D :D :D

bin leider mit js noch nicht so firm...aber es wird schön langsam ;) aber trotzdem ganz sche lustig das ich das wie ichs ausgelesen habe eh von der gleichen seite hatte :D man sollte doch den ganzen text lesen ;)
 
Zurück
Oben Unten