Variable als Javascript-Objekt
Michael
- javascript
0 Andreas Schneider0 Yeti0 Struppi0 Bernd
Hallo zusammen!
Ich weiß nicht, ob ich mein Thema korrekt formuliert habe.
Jedenfalls möche ich eine Funktion zur Überprüfung von
mehreren Textfeldern nutzen. Dazu ist es aber notwendig den Elementnamen
mit zu übergeben, was ich mit "this.name" mache. Diese Variable
muss jetzt in einen "Pfad" eingebaut werden. Etwa in der Art
"document.form." + variable + ".value"
Funktioniert so etwas? Und wenn ja, wie sieht der Code dazu aus?
Danke...
Michael
Hallo Michael,
Jedenfalls möche ich eine Funktion zur Überprüfung von
mehreren Textfeldern nutzen. Dazu ist es aber notwendig den Elementnamen
mit zu übergeben, was ich mit "this.name" mache. Diese Variable
muss jetzt in einen "Pfad" eingebaut werden. Etwa in der Art
"document.form." + variable + ".value"
Funktioniert so etwas? Und wenn ja, wie sieht der Code dazu aus?
Ja, mit document.formname.elements[variable].value
Grüße
Andreas
Hi,
du suchst "eval()".
Diese Variable
muss jetzt in einen "Pfad" eingebaut werden. Etwa in der Art
"document.form." + variable + ".value"
Funktioniert so etwas? Und wenn ja, wie sieht der Code dazu aus?
eval("document.form."+variable+".value='watauchimmer'");
Der Yeti
du suchst "eval()".
auf gar keinen Fall. eval ist evil!
eval("document.form."+variable+".value='watauchimmer'");
document.form[variable].value = 'watauchimmer';
Struppi.
Hi,
du suchst "eval()".
auf gar keinen Fall. eval ist evil!
Ach ja? Inwiefern?
Der Yeti
auf gar keinen Fall. eval ist evil!
Ach ja? Inwiefern?
Du findest vielfältige Antowrten dazu im archiv.
sag mir einen Grund, der für eval spricht?
Struppi.
Hi,
Du findest vielfältige Antowrten dazu im archiv.
Viel zu vielfältig für einen kurzen Überblick. Keiner der Suchtreffer hat wirklich das Thema "eval - für und wider"...
Schade, ich dachte du hättest vielleicht eine eigene Antwort parat (ist es etwa die, ein böser Benutzer könnte die übergebene Variable ändern und so "malware" erzeugen?)
sag mir einen Grund, der für eval spricht?
for (var i = 1; i <= ende; i++)
eval("document.formular.checkbox" + i + ".checked = " + set);
oder
eval("document.formular."+var1+var2".focus();")
Funktioniert bei mir nicht über document.formular[feld]... aber wenn du mich erleuchtest, wäre ich dir sehr dankbar.
Der Yeti
Du findest vielfältige Antowrten dazu im archiv.
Viel zu vielfältig für einen kurzen Überblick. Keiner der Suchtreffer hat wirklich das Thema "eval - für und wider"...
Schade, ich dachte du hättest vielleicht eine eigene Antwort parat (ist es etwa die, ein böser Benutzer könnte die übergebene Variable ändern und so "malware" erzeugen?)
Das ist blödsinn, aber ich (und andere) habe mich hier schon x-mal zu dem Thema geäußert und es ist halt müßig etwas immer wieder zu wiederholen obwohl es ja hier schon zu finden wäre.
Also:
eval ist saulahm
eval macht es shcwer fehler zu finden
eval ist fast immer überflüssig
eval läßt sich schlechter lesen
eval führt in manchen Browsern häufiger zu Abstürzen
sag mir einen Grund, der für eval spricht?
for (var i = 1; i <= ende; i++)
eval("document.formular.checkbox" + i + ".checked = " + set);
document.formular['checkbox' + i].checked = set;
oder
eval("document.formular."+var1+var2".focus();")
document.formular[var1 + var2].focus();
Funktioniert bei mir nicht über document.formular[feld]... aber wenn du mich erleuchtest, wäre ich dir sehr dankbar.
Natürlich funktioniert das.
Struppi.
Hi,
Das ist blödsinn, aber ich (und andere) habe mich hier schon x-mal zu dem Thema geäußert und es ist halt müßig etwas immer wieder zu wiederholen obwohl es ja hier schon zu finden wäre.
Komisch, dass du mir bisher noch keinen Anhaltspunkt nennen konntest, wo ich x Beiträge zu dem Thema finden kann...
Also:
eval ist saulahm
eval macht es shcwer fehler zu finden
eval ist fast immer überflüssig
eval läßt sich schlechter lesen
eval führt in manchen Browsern häufiger zu Abstürzen
Sehe ich ein.
Aber:
1. zieht nicht bei einer Anweisung pro Seite
2. richtig, der berühmte Fehler in Zeile 1 wo kein JavaScript ist ... solange man sich aber auf einfache Anweisungen beschränkt gar keine Problem
3. ACK, aber kein Argument für "eval = evil"
4. für mich nicht, ich bastel mir einen String zusammen, den JavaScript dann ausführen darf
5. Das habe ich bisher noch nicht beobachtet, wäre aber natürlich ein Killerargument.
Dagegen steht die (für mich) intuitive Benutzung.
Natürlich funktioniert das.
Sag das nicht mir sondern dem Browser. Aber bevor ich wertvolle Stunden vergeude, halte ich mich lieber an eval, das funktioniert zuverlässig.
Der Yeti
- für mich nicht, ich bastel mir einen String zusammen, den JavaScript dann ausführen darf
Du machst, wen du die Objekte direkt ansprichst doch 100% das gleiche, nur dass du unbedingt einen String erzeugen willst der vom JS nochmal geparst werden musss, d.h. er ist immer schlechter lesbar und insofern nie und nimmer...
Dagegen steht die (für mich) intuitive Benutzung.
intuitiv.
Mit eval musst du erst einen JS Befehl zusammen bauen und mit der normalen nur den Teil der das Objekt anspricht.
Natürlich funktioniert das.
Sag das nicht mir sondern dem Browser. Aber bevor ich wertvolle Stunden vergeude, halte ich mich lieber an eval, das funktioniert zuverlässig.
Das funktioniert 100% zuverlässig sogar in meinem Netscape 3 den ich ab und an benutze.
Während, wie gesagt, eval eher fehleranfällig ist. Und warum das intuitiv sein soll ist mir ein Rätsel.
Struppi.
Komisch, dass du mir bisher noch keinen Anhaltspunkt nennen konntest, wo ich x Beiträge zu dem Thema finden kann...
Im Archiv!
Bei mir liefert die Suche im Archiv (2003/2004)
http://suche.de.selfhtml.org/cgi-bin/such.pl?suchausdruck="eval+ist+evil"&lang=on&feld=alle&index_5=on&index_6=on&hits=100
37 Treffer, in vielen zähle ich nur kurz auf (wie gesagt man wiederholt sich ungern ständig) warum eval nicht sinnvoll ist, aber es gab durchaus schon längere Threads zum Thema.
z.b. http://forum.de.selfhtml.org/archiv/2004/7/85372/#m502664
einfach mal ein bisschen suchen, beantwortet in der Regel meistens schenller Fragen.
Struppi.
Hallo,
sag mir einen Grund, der für eval spricht?
for (var i = 1; i <= ende; i++)
eval("document.formular.checkbox" + i + ".checked = " + set);
document.forms["formular"].elements["checkbox"+i].checked = set;
oder
eval("document.formular."+var1+var2".focus();")
document.forms["formular"].elements[var1+var2].focus();
Funktioniert bei mir nicht über document.formular[feld]... aber wenn du mich erleuchtest, wäre ich dir sehr dankbar.
document.formular.elements[feld]
document.forms["formularname"].elements["elementname"]
oder DOM-konform:
document.forms.namedItem("formulaname").elements.namedItem("elementname")
viele Grüße
Axel
gruss Yeti,
du suchst "eval()".
auf gar keinen Fall. eval ist evil!
Ach ja? Inwiefern?
lektuere:
1 pro und realitaet beruecksichtigendes contra:
http://groups.google.de/groups?q=eval+evil&hl=de&lr=&ie=UTF-8&newwindow=1&group=de.comp.lang.javascript&selm=3D886921.6050309%40t-online.de&rnum=1
fundiertes contra:
http://groups.google.de/groups?q=eval+evil&hl=de&lr=&ie=UTF-8&newwindow=1&group=de.comp.lang.javascript&selm=avi78v%24g5umc%241%40ID-3767.news.dfncis.de&rnum=3
polemisches contra und 2 pros:
http://groups.google.de/groups?q=eval+evil&hl=de&lr=&ie=UTF-8&newwindow=1&group=de.comp.lang.javascript&selm=4051C4D8.6000609%40PointedEars.de&rnum=8
1 gewichtiges pro:
http://groups.google.de/groups?q=eval+evil&hl=de&lr=&ie=UTF-8&newwindow=1&group=de.comp.lang.javascript&selm=atp88r%241aq1l%241%40ID-3767.news.dfncis.de&rnum=13
2 pros und 4 contras fuer news-reader:
http://groups.google.de/groups?q=eval+evil&hl=de&lr=&ie=UTF-8&newwindow=1&group=de.comp.lang.javascript&selm=bp5ng0%241ikjgr%241%40ID-3767.news.uni-berlin.de&rnum=5
der link zu den genannten treffern
http://groups.google.de/groups?q=eval+evil&num=20&hl=de&lr=&ie=UTF-8&newwindow=1&group=de.comp.lang.javascript&start=60&sa=N
diese argumentation[lang="en"] bringt es sehr gut auf den punkt:
http://groups.google.de/groups?q=eval+evil&hl=de&lr=&ie=UTF-8&newwindow=1&group=comp.lang.javascript&selm=oSi_c.27409%243l3.21801%40attbi_s03&rnum=2
_weil_es_so_in_den_FAQs[lang="en"]_steht_basta_:
http://jibbering.com/faq/#FAQ4_40 ;-)
so long - peterS. - pseliger@gmx.net
Aaah, das ist doch mal brauchbar.
Danke!
Der Yeti
Ich weiß nicht, ob ich mein Thema korrekt formuliert habe.
Jedenfalls möche ich eine Funktion zur Überprüfung von
mehreren Textfeldern nutzen. Dazu ist es aber notwendig den Elementnamen
mit zu übergeben, was ich mit "this.name" mache. Diese Variable
muss jetzt in einen "Pfad" eingebaut werden. Etwa in der Art
"document.form." + variable + ".value"
Funktioniert so etwas? Und wenn ja, wie sieht der Code dazu aus?
Wenn du der Funktion mit this.name den Namen übergeben kannst, dann brauchst du das nicht. Übergib einfach nur this. Die Referenz des Formulares hast du dann ebenfalls (this.form)
Struppi.
Hab mir vorhin für eine interne Anwebndung diesen dirty Hack geschrieben:
Container ist ein mehrdimensionaler Array (Name, Pos etc.) in dem ich alle Div's die ich auslesen will und in ein hidden field packe.
Der Name des Divs ist dann an erster Stelle und heist "Cont01".
Mein Filed heist dann "Cont01Content".
Frage also alle formelemente nach ihren Namen und lass mir dann Ihre Pos im Form Array ausgeben. Das mit der -1 ist nur ne Notlösung. Ist halt Dirty.
function saveData(){
tmpCount = Container.length;
for(var i = 0; i < tmpCount; i++){
tmpNumber = false;
tmpNumber = checkElementNumber([Container[i][0]]+"Content");
if(tmpNumber){
document.myEdit[tmpNumber-1].value = document.getElementById(Container[i][0]).innerHTML;
}
}
document.myEdit.submit();
}
// Ermittelt nach den Namen die Nummer des Form-Elementes;
function checkElementNumber(ElementName){
tmpCount1 = document.myEdit.elements.length;
for(var m = 0; m < tmpCount1; m++){
if(document.myEdit.elements[m].name == ElementName){
return m+1;
}
}
}