Vraag & Antwoord

Webprogrammeren & scripting

Wazig...of toch niet ?

8 antwoorden
  • Ik hou eigenlijk helemaal niet van JavaScript, maar voor dit stukje leek het me handig. Ik heb een rits met checkboxen waar de value een getal is en nu wil ik aan de hand van welke checkbox is aangevinkt een optelling maken en weergeven in een textfield. Nu had ik zelf deze functie bedacht: [code:1:20c53006d2] function bereken(what) { if(what.checked) { var totaal=what.form.totaal.value; totaal+=what.value; what.form.totaal.value=totaal; } else { var totaal=what.form.totaal.value; totaal-=what.value; what.form.totaal.value=totaal; } } [/code:1:20c53006d2] Het textfield heeft als beginwaarde '0'. Alleen als ik een checkbox aanvink plakt ie de waarde er gewoon achter (niet optellen dus) stel dat een checkbox de waarde 50 heeft, dan komt er niet in t textfield te staan '50', maar '050'. het rare is dat de else wel goed gaat, dan worden de getallen netjes van mekaar afgetrokken. Wat is er fout aan mijn functie ? Thanx...
  • Weet niet zeker, maar probeer dit eens: [code:1:1dad2661b7] function bereken(what) { if(what.checked) { var totaal=eval(what.form.totaal.value); totaal+=eval(what.value); what.form.totaal.value=eval(totaal); } else { var totaal=eval(what.form.totaal.value); totaal-=eval(what.value); what.form.totaal.value=eval(totaal); } } [/code:1:1dad2661b7] Ik dacht tenminste dat eval() de funtie is om een waarde als getal te beschouwen, als hij dat niet is moet je even die functie zoeken want ik denk dat dat de fout is. Hij beschouwt de inhoud als tekst en niet als getal dus optellen zal niet werken zoals verwacht. Groet, Marcel
  • [quote:362e69839b="Mvlstar"]Ik dacht tenminste dat eval() de funtie is om een waarde als getal te beschouwen[/quote:362e69839b] eval() is een functie om een string te evalueren c.q. uit te voeren. Om een string om te zetten naar een getal kan je parseInt() of parseFloat() gebruiken, afhankelijk van het type wat je terug wil krijgen. oh ja, het probleem is inderdaad dat je 2 strings concateneert ipv een optelling doet van 2 integers. De value van een form-input is namelijk altijd een string.
  • Dat was het ja... Bedankt Annie weet ik het ook weer...
  • als ik doe: [code:1:58af529e99] if(what.checked) { var totaal=parseInt(what.form.totaal.value); totaal+=parseInt(what.value); what.form.totaal.value=totaal; } [/code:1:58af529e99] dan komt er in het textfield 'NaN' te staan... :-?
  • hoe roep je de functie aan
  • Dit is de pagina: [code:1:712c053efc] <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>Offerte berekening</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function bereken(what) { var totaal=0; if(what.checked) { totaal=parseInt(what.form.totaal.value); totaal+=parseInt(what.value); what.form.totaal.value=totaal; } else { totaal=what.form.totaal.value; totaal-=what.value; what.form.totaal.value=totaal; } } //--> </SCRIPT> </HEAD> <BODY> <form> <input type=checkbox name="standard" value="181" onClick="bereken(this)">Carkit <br> <input type=checkbox name="standard" value="56" onClick="bereken(this)">Glas binnenantenne <br> <input type=checkbox name="standard" value="118" onClick="bereken(this)">Inbouw kosten <br> <input type=checkbox name="standard" value="80" onClick="bereken(this)">Ombouwkosten <br> <input type=text name=totaal> </form> </BODY> </HTML> [/code:1:712c053efc] Klopt dat n beetje :-?
  • nee, de aanroep klopt wel, maar dan klopt deze niet meer: totaal=parseInt(what.form.totaal.value); (2x) 'what' is een checkbox en een checkbox heeft geen eigen form. Wat je wil hebben is dit: totaal=parseInt(document.forms[0].totaal.value);

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.