PDA

Volledige versie bekijken : waarden uit array in een loop


latino
%Europe/Berlin %564 %2005, 14:32
ik ben een registreer pagina ana het maken. nu heb ik een 12 stuks checkboxjes die men kan aanvinken

ik dacht slim te zijn door dit te doen:


var styles:Array = ["trance","prog","tech","hcore","jstyle","terror","toschool","hstyle","club","htrance","hhouse","ambt"];
for(i=-1; i < styles.length; i++){

if(styles[i]add _cb.selected){
registreren.styles[i] = true;
}
}


registeren verwijst naar een Loadvars dus deze wordt met post naar een php bestand gestuurd. De waarde in de array zijn de namen van checkboxen. In de if probber ik daar een _cb aan te koppelen omdat de instancenamen zo zijn.

Zonder die _cb heb ik ook getest maar doet het ook niet.

Als ik gewoon zo doe:

if(trance_cb.selected){
registreren.trance = true;
}

doet ie het wel, maar dan moet ik dit 12 keer doen en ik dacht dat kan sneller maar helaas..doe ik iets fout?

Folkert
%Europe/Berlin %573 %2005, 14:45
for(var i=0; i < styles.length; i++){
var jeStyle = styles[i];
if(_level0[jeStyle+"_cb"].selected){
registreren[jeStyle] = true;
}
}
je kan immers niet een String gebruiken waar een referentie nodig is.

Roenes
%Europe/Berlin %573 %2005, 14:46
doe ik iets fout?Jeps ;)
Zie de rode stukken voor verbetering:

var styles:Array = ["trance","prog","tech","hcore","jstyle","terror","toschool","hstyle","club","htrance","hhouse","ambt"];
for(var i=0; i < styles.length; i++){

if(eval(styles[i] + "_cb").selected){
registreren.styles[i] = true;
}
}

latino
%Europe/Berlin %584 %2005, 15:01
ja die van flokert doet het, allen snap ik niks van je uitleg (waarom bijv een _level0 + haakjes ? en een aparte variable jeStyle maken)

die van roenes lijkt me logischer :) maar die doet het niet.... eval maakt toch een numerieke waarde van een string?

Folkert
%Europe/Berlin %589 %2005, 15:08
de naam is Folkert :p
_level0 is hoogstwaarschijnlijk waar jij je checkboxen hebt staan.
De haken zijn om de variable jeStyle te combineren met de string "_cb", door de haken zo te gebruik maak je een referentie dus feitelijk is

var bla =12;
_level0["truus"+bla] = "yes";

hetzelfde als
_level0.truus12 = "yes";


Waarom ? omdat je in je array als eerste Strings opslaat, welke dus nog omgezet moeten naar een referentie (daar zijn de haken voor, of bij flash 4 en 5 de eval("string"+variable).

latino
%Europe/Berlin %600 %2005, 15:25
als ik het goed begrijp wil je je "" zien weg te krijgen? Een referentie is dus iets als trance_cb.selected

en ander zou er dit staan "trance_cb".selected , wat geen referentie is maar een string...heb ik het goed :)

kan het ook zonder level0? of met _root?

alvast bedankt folkert ;)

oja ik gebruik mx vandaar dat eval het niet doet

oja2: waarom een aparte jeStyle variable? waarom kun je niet dit doen : (_level0[styles[i]+"_cb"].

The_One
%Europe/Berlin %677 %2005, 17:16
oja ik gebruik mx vandaar dat eval het niet doet

oja2: waarom een aparte jeStyle variable? waarom kun je niet dit doen : (_level0[styles[i]+"_cb"].

oja1; Eval moet het ook bij jou doen :)

oja2; Kan ook ja :) Wat je zelf het meest duidelijkst en/of makkelijkst vind

Folkert
%Europe/Berlin %702 %2005, 17:51
als ik het goed begrijp wil je je "" zien weg te krijgen? Een referentie is dus iets als trance_cb.selected
Inderdaad, je zet de string om naar een referentie.
en ander zou er dit staan "trance_cb".selected , wat geen referentie is maar een string...heb ik het goed :)
Deels, het trance_cb deel is een string, waardoor het tweede deel geen zin heeft en dat stukje code een foutmelding zal opleveren :P

kan het ook zonder level0? of met _root?

ja hoor of met this of een ander path. los gaat niet dus [bla].doeIets() gaat niet

oja ik gebruik mx vandaar dat eval het niet doet

nonsence, eval werkt wel alleen is de manier die ik heb gebruikt eigenlijk de standaard sinds flash MX.

oja2: waarom een aparte jeStyle variable? waarom kun je niet dit doen : (_level0[styles[i]+"_cb"].
Sja, ik houd van overzichtelijkheid, anderen willen graag zo kort mogelijk. Jij mag zelf kiezen wat je wilt.

latino
%Europe/Berlin %731 %2005, 18:33
thanks voor de uitleg maar eval werkt echt niet..in ieder geval niet hoe die als voorbeeld werd gegeven..

trouwens op een of andere manier doet dit het ook niet:

(_level0[styles[i]+"_cb"].

en als _level0["truus"+bla] = "yes"; staat voor _level0.truus12 = "yes";

dan kan ik volgens mij wel truus12 = yes; doen

aangezien het al op de root staat ;)

The_One
%Europe/Berlin %373 %2005, 09:57
trouwens op een of andere manier doet dit het ook niet:

(_level0[styles[i]+"_cb"].

je moet het haakje weghalen:) -> _level0[styles[i]+"_cb"].