anoniem Geplaatst: 17 juli 2002 Delen Geplaatst: 17 juli 2002 Hallo, Ik heb het volgende probleem: Ik heb een javascript met een aantal strings er in. Deze strings zien er bv zo uit : "document.form1.som1.value","document.form1.som3.value" e.d. Nu wil ik de waardes van deze velden benaderen en er een berekening mee maken, maar het probleem is dat hij dan de strings samenvoegd, en niet de waardes die deze velden bevatten opteld. Wie weet hoe ik dit op kan lossen ?? mvgr, Niels Quote Link naar reactie
anoniem Geplaatst: 17 juli 2002 Auteur Delen Geplaatst: 17 juli 2002 Converteer de values van string naar een numerieke waarde dmv parseFloat. Het probleem ontstaat doordat er twee strings bij elkaar 'opgeteld' worden ook al zijn deze strings numerieke waarde. vb.: var Totaal = parseFloat(document.form1.som1.value)+parseFloat(document.form1.som3.value); Denk er wel aan dat de waarden in de velden eerst getest worden op numeriek. Anders zal de parseFloat hierbij niet werken en resulteren in NaN (Not a Number) Quote Link naar reactie
anoniem Geplaatst: 17 juli 2002 Auteur Delen Geplaatst: 17 juli 2002 [code:1:8a871ac284]iTotal = eval('document.form1.som1.value') + eval('document.form1.som3.value');[/code:1:8a871ac284] /E Quote Link naar reactie
anoniem Geplaatst: 17 juli 2002 Auteur Delen Geplaatst: 17 juli 2002 Dat met eval werkt goed, dank je. Nou zit ik nog met het volgende probleem: ik heb dus een aantal van die velden in m'n pagina staan, maar dat is afhankelijk van wat er in de database staat. Soms heb ik dus bv. som1, som2, som3, som6, som7 e.d ik laat al de waardes van deze velden met een for lus optellen waarbij elke keer het getal achter som met 1 opgehoogd wordt. Nou is het geval zo dat hij stopt als hij een veld niet kan vinden, bv. som4 in het bovenstaande rijtje. Heeft iemand hier wat op ??? dit is de code die ik nu heb : for(j=1;j<=last;j++) { veld=eval("document.form1.som"+j+".value"); totaal+=veld; alert(j+" "+veld); } Quote Link naar reactie
anoniem Geplaatst: 17 juli 2002 Auteur Delen Geplaatst: 17 juli 2002 Je kan imho beter de elements collection van het form nalopen (ipv telkens een [i:ef19eaf627]eval()[/i:ef19eaf627] doen) en igv een match op de name de optelling doen. bijv: [code:1:ef19eaf627] var iSum = 0; var oFormElements = document.forms[0].elements; for (var i = 0; i < oFormElements.length; i++) { if (/^som\d+$/.test(oFormElements[i].name) && !isNaN(oFormElements[i].value)) { iSum += parseFloat(oFormElements[i].value); } } alert(iSum); [/code:1:ef19eaf627] Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen