0

我是 Javascript 初学者,但我使用 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,但仅需要添加在选中复选框时才需要添加,否则其值必须为 0。但我似乎无法弄清楚,因为它总是添加“ c" 值为 0.01,选中或未选中。

请帮忙

4

2 回答 2

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是邪恶的

来自 Douglas Crockford 的网站 - JavaScript 代码约定

eval 函数是 JavaScript 中被滥用最多的特性。躲开它。

eval 有别名。不要使用 Function 构造函数。不要将字符串传递给 setTimeout 或 setInterval。

另外,请阅读此-

于 2013-03-31T11:58:26.563 回答
0

考虑使用单选按钮而不是复选框。然后,您可以将多个值链接到单个对象。有关确切差异,请参见http://www.w3schools.com/html/html_forms.asp

于 2013-03-31T11:58:56.313 回答