eval() oder was?
piet
- javascript
Hallo Forum,
ich möchte mit einer Javascriptfunktion Formularfelder ansprechen. Dabei wird der Feldname als Parameter an die Funktion übergeben. Das sollte nach meinen (geringen)Javascript-Kenntnissen mit Hilfe von eval() möglich sein. Bin nach Archivsuche mitlerweile bei folgendem (auf das Problem reduzierten) Code angekommen:
===========================================================
<html><head><title>Unbenannt</title>
<script language="JavaScript1.2">
function test(field) {
//so funktioniert es
//document.form1.feld1.value='blabla'
//die folgenden Varianten leider nicht
eval("document.form1." + field + ".value='blabla'");
//eval("document.forms.form1.elements[" + field + "].value='12345'");
}
</script>
</head>
<body>
<form action="" name="form1">
<input type="text" name="feld1">
<input type="button" value="test" onClick="test(feld1)">
</form>
Was mach ich da falsch??
Danke schon mal fürs Lesen
piet
Hi,
Dabei wird der Feldname als Parameter an die Funktion übergeben.
document.form1.elements[name]
mit Hilfe von eval()
eval() is evil(). In jeder Sprache - auch wenn es in JavaScript sehr wenig auffällt. Verzichte darauf, wann immer Du das gleiche auch mit anderen Mitteln irgendwie erreichen kannst.
Cheatah
Hi Cheatah,
document.form1.elements[name]
funktionierts leider auch nicht.
eval() is evil(). In jeder Sprache - auch wenn es in JavaScript sehr wenig auffällt. Verzichte darauf, wann immer Du das gleiche auch mit anderen Mitteln irgendwie erreichen kannst.
Hast du da einen anderen Lösungsansatz für mich??
Danke schon mal
piet
Hi,
document.form1.elements[name]
wenn du das meinst:
eval("document.form1.elements[" + field + "].value='blabla'");
nein, ich meine document.form1.elements[name], deswegen schrieb ich das. "name" heißt bei Dir "field".
Cheatah
Hallo Cheatah,
folgendes funktioniert nun und ist einigermassen flexiebel.
<script language="JavaScript1.2">
function eintest(form,feld) {
document.forms[form].elements[feld].value='blabla';
}
</script>
Allerding klappt es nur, wenn ich die Array-nummer übergebe, die Namen von Form und Element als Parameter liefern weiterhin Fehler. In meinem realen (nicht reduzierten) Problem generiert sich die Anzahl der Form-Elemente aber dynamisch und ich möchte daher gerne mit name="xyz" arbeiten.
Kennt da jemand noch ne Lösung?
Auf jeden Fall schon mal Danke für eure Hilfe!!!
piet
Hi,
Allerding klappt es nur, wenn ich die Array-nummer übergebe, die Namen von Form und Element als Parameter liefern weiterhin Fehler.
hast Du Calocybes Entdeckung beachtet? onMouseOver="bla(blub)" übermittelt der Funktion bla() die _Variable_ blub, nicht den _String_ "blub".
Ansonsten: Zu einer Fehlerbeschreibung gehört als allererstes die Fehlermeldung...
Cheatah
<script language="JavaScript1.2">
function test(field) {
[...]
funktionierts leider auch nicht.
Es gibt in JS schon eine Funktion test(). Versuch doch mal 'nen anderen Namen.
By
Reinhard
Hi!
<form action="" name="form1">
<input type="text" name="feld1">
<input type="button" value="test" onClick="test(feld1)">
^^^^^
Hast Du denn eine Variable namens feld1? Oder meintest Du vielleicht die Zeichenkette "feld1"? (Antwort: Ja!)
Zugriff dann ohne eval() mit
document.forms["form1"].elements[field].value
Noch einfacher ist es, wenn Du statt dem Feldnamen (zu dem Du ja auch noch den Formularnamen wissen musst, damit der was nuetzt) einfach das Feld selbst als Objekt uebergibst:
<input type="button" value="test" onClick="test(this.form.feld1)">
Die Funktion nimmt dieses Objekt dann:
function test(textfield)
und greift direkt darauf zu:
textfield.value='blabla';
So long
--
Alle Verallgemeinerungen sind falsch.