Function

Status
Niet open voor verdere reacties.

JeroenE

Terugkerende gebruiker
Lid geworden
20 mrt 2005
Berichten
1.950
Hallo,

Ik heb een formulier met meerdere velden, zowel radio's als checkboxen, met elk hun waarde.
Per optie heeft alles een behoorlijk gelijke naam: webshop, webshopsubtotaal, ...
alsook in het javascript: var nwebshop

Ik heb dan ook een functie "totaalberekenen(soptie, nprijs, smeerdere);"
Deze wordt aangeroepen door : totaalberekenen('webshop', this.value, '') of totaalberekenen('taal', 0, 'talen')

Wat ik graag zou doen, is de 'soptie' gebruiken om de nwebshop of ntaal een waarde te geven.
Hoe kan ik dat best doen, want eval("n" + soptie) = waarde werkt niet.
Alvast bedankt.
 
Hi,

als je eval wilt gebruiken (maar serieus, dat wil je niet) moet je zoiets doen:[JS]eval("n" + varnaam = 4");[/JS]Wat beter is is om mischien een hashtable achtig iets te doen:
[JS]var myvars = {};

myvar['nwebshop'] = 0;[/JS]en dan als assigning:[JS]myvar['n' + soptie] = ....value;[/JS]
 
Hehe, die is goed "maar serieus, dat wil je niet" :D:thumb:

Dank je wel, Vegras, voor de reactie.

Wat is de reden dat eval niet zo goed is?

Eens de waarde toegewezen of berekend is, want er zijn reeksen checkboxen die ik als array moet gebruiken omdat er tot tien keuzes tegelijk mogelijk zijn voor 1 optie, moet die waarde nog in het formulier komen in vb "webshopsubtotaal", dus daar zou ik weer die soptie + "subtotaal" kunnen gebruiken.
 
Daarom is eval evil. Kortgezegd: eval maakt een nieuw parser-geval aan. Het is langzaam, gevoelig voor problemen (geeft indringers complete access) en 9 van de 10 keer kan het omzeild worden.

Maarum, is je vraag opgelost? :thumb:
 
Ok, thx. Ik heb op die eerste link iets goeds gevonden en heb het nu opgelost met "document.all[soptie + "subtotalen"]" en een array voor het opslaan van de waardes per optie.
Alvast heel erg bedankt :-):thumb:
 
document.all is IE-specifieke-code, dus je kan dan beter voor gEBY gaan:
[JS]var stuff = document.getElementById(soptie + 'subtotalen');[/JS]:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan