PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Frage] array mit variablem namen


|sXe|
20.05.2004, 18:55
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

|sXe|
21.05.2004, 00:34
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

z3r0x
21.05.2004, 02:47
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

|sXe|
21.05.2004, 14:27
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

z3r0x
21.05.2004, 15:46
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

|sXe|
21.05.2004, 16:27
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