Archiv verlassen und diese Seite im Standarddesign anzeigen : [Frage] array mit variablem namen
Hi zusammen
Ich habe ein Problem an dem ich jetzt schon ewig hänge und einfach nicht weiter
komme.
function fragenb() {
array = new Array;
for ( j=1; j <= 20; j++) {
name = 'a'+gewaehlt[j][0];
for ( i=0; i <= 2; i++) {
if (document.forms[0].name[i].checked) {
array[j] = document.forms[0].name[i].value;
}
}
}
}
In der obigen funktion versuche ich den namen das arrays (name[i]) zu verändern.
Mit statischem namen kann ich wunderbar auf die Radiobuttons meines Formulars
zugreifen.
Also die Form hier geht:
function fragenb() {
array = new Array;
for ( j=1; j <= 20; j++) {
for ( i=0; i <= 2; i++) {
if (document.forms[0].festername[i].checked) {
array[j] = document.forms[0].festername[i].value;
}
}
}
}
Ich wüste gerne wie man das lösen kann.
Danke schonmal
cya
sxe
Messiah_of_Death
20.05.2004, 23:25
meinst du net eher sowas ?
document.forms[0]['Blubb'].value
statt Blubb einfach den Namen des Form - Elementes einsetzen, dies kann dann auch mittels einer Variable geschehen,welche ein String ist, welcher den Namen des Elementes enthält
hi
Also das mit den Elementen ist klar.
Mein Problem ist nur, dass das Element auf welches ich zugreifen möchte
Radiobuttons sind, die man wegen den gleichen namen nur über ein array
ansprechen kann.
document.forms[0].name[i].checked
name[i] ist hier das array über das ich auf die radiobuttons mit dem namen "name"
zugreifen kann. Mein Prob ist jetzt das mein array nicht immer "name" heist
sondern a1[], a2[], a3[] usw. Ich müste also ein array mit variablem namen haben
wie in meinem zweiten Beispiel schon gepostet. So wie ich es gelöst habe geht es
aber nicht .
Ich will also das ( a1[i] ) die eins aus a1 und eben das [i] mit jeweils ner for
schleifer durchlaufen werden können.
Ich hoffe das konnte man besser verstehen :]
merci
sxe
eval() sollte dein Problem loesen...
Beispiel:
<script>
var a0 = new Array("a","e","i","m","q","u");
var a1 = new Array("b","f","j","n","r","v");
var a2 = new Array("c","g","k","o","s","w");
var a3 = new Array("d","h","l","p","t","x");
for(x=0;x<=5;x++) for(y=0;y<=3;y++) document.write(eval('a'+y)[x]);
</script>
Gruß z3r0x
Hi z3r0x
Ich habe es mal so versucht:
function fragenb() {
array = new Array;
for ( j=1; j <= 20; j++) {
name = eval('a'+gewaehlt[j][0]);
for ( i=0; i <= 2; i++) {
if (document.forms[0].name[i].checked) {
array[j] = document.forms[0].name[i].value;
}
}
}
}
name = eval('a'+gewaehlt[j][0]); das ist ja die Form mit der du meinst das es
gehen sollte oder? gewaehlt[j][0] enthält zufallszahlen. Wenn ich das jetzt
allerdings so mache bekomme ich immer den Fehler "a1 is net defined" wobei "1
von a1" in dem fall der erste Eintrag des arrays gewaehlt[j][0] ist. Der Fehler tritt
in der zeile auf ( name = eval('a'+gewaehlt[j][0]); ).
ka was ich da falsch mache.
bis dann
wobei "1 von a1" in dem fall der erste Eintrag des arrays gewaehlt[j][0] ist.
Huh?
Irgendwie habe ich $null Plan, was genau du da machen willst.
Ich habe dich in deinem vorletzten Beitrag so verstanden, dass der Arrayname in deiner Loop dynamisch sein soll.
Die Fehlermeldung 'aX is undefined' erhaelst du nur, wenn das Array bis dahin noch nicht existierte.
Gruß z3r0x
Hi ..
Also .. ka was du falsch verstanden hast aber ich habs jetzt selbst rausbekommen.
function fragenb() {
array = new Array;
for ( j=1; j <= 20; j++) {
name = 'a'+gewaehlt[j][0];
for ( i=0; i <= 2; i++) {
if (eval('document.forms[0].'+name+'['+i+'].checked')) {
array[j] = eval('document.forms[0].'+name+'['+i+'].value');
}
}
}
}
So funktioniert es.
Habe jetzt zwar wieder ein neues Prob aber dazu mache ich ein neues Post auf.
Danke nochmal.
bye
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.