2013-03-31 65 views
0

我是一個Javascript初學者,但我爲我的網站使用Javascript數學函數構建了一個簡單的Cost Estimator。JavaScript - 只在選中時計算複選框

function calc(form) { 
    a = eval(form.a.value) 
    b = eval(form.b.value) 
    c = eval(form.c.value) 
    x = a*(b+c) 
    form.ans.value = parseFloat(x).toFixed(2); 
} 

形式是簡單的:

<form name="formx"> 
    <label for="a">Number of Units :</label> 
    <input type="number" size=3 value=0 name="a"> 
    <label for="b">Price per Unit :</label> 
    <select name="b"> 
     <option value="0.04">0.04</option> 
     <option value="0.05">0.05</option> 
     <option value="0.06">0.06</option> 
    </select> 
    <label for="c">Tick if Urgent</label> 
    <input name="c" type="checkbox" value="0.01" /> 
    <input class="button" type="button" value=" CALCULATE " onClick="calc(this.form)"> 
    <label for="ans">Total Cost :</label> 
    <input value=" £ " name="ans" size=6> 
</form> 

的「c」的值,對於緊急服務,爲0.01,但它需要添加ONLY當複選框被選中,否則其值爲必須是0.但我似乎無法弄清楚,因爲它總是將「c」值加上0.01,選中或取消選中。

請幫

+1

爲什麼使用'eval()'? – Antony

回答

4

嘗試這個 -

function calc(form) { 
    var a = parseFloat(form.a.value) 
    var b = parseFloat(form.b.value) 
    var c = (form.c.checked) ? parseFloat(form.c.value) : 0; 
    var x=a*(b+c) 
    form.ans.value=parseFloat(x).toFixed(2); 
} 

注意 -

eval是邪惡

從道格拉斯Crockford的網站 - JavaScript Code conventions

eval函數是JavaScript中濫用最多的功能。躲開它。

eval有別名。不要使用函數構造函數。不要將 字符串傳遞給setTimeout或setInterval。

此外,閱讀這 -