购物篮小计

时间:2012-07-11 03:38:39

标签: javascript html onclick shopping-cart

希望有人可以帮助我!有一个简单的订单列表,但如果有人点击一个选项,但后来改变主意并点击一个不同的选项,它只是不断添加值...不知道如何解决它...代码如下

<html>
<head>
<script>
    total = 0;
    function Update_Subtotal(radio){
        price = radio.getAttribute("price");
        total = parseInt(total) + parseInt(price);
        document.getElementById("total").innerHTML = '£' + total;
}
</script>
</head>
<body>
<form name="form" method="post" action="">
    <fieldset>
        <legend>Option 1</legend> 
        <input type="radio" price="100" onclick="Update_Subtotal(this);" />Sub1
        <input type="radio" price="200" onclick="Update_Subtotal(this);" />Sub2
        <input type="radio" price="300" onclick="Update_Subtotal(this);" />Sub3
    </fieldset>
    <fieldset>
        <legend>Option 2</legend> 
        <input type="radio" price="10" onclick="Update_Subtotal(this);" />Sub1
        <input type="radio" price="20" onclick="Update_Subtotal(this);" />Sub2
        <input type="radio" price="30" onclick="Update_Subtotal(this);" />Sub3
</fieldset>
</form>
<div id="total"></div>
</body>
</html>

现在让我们在选项1中卖出我选择sub2然后在选项2中选择子1 ...我得到的总数是210这是正确的,但是,如果我改变主意,在选项2中我选择sub 3,我应该得到的答案是230,但我得到的总数是240

提前感谢您的帮助!

詹姆斯

3 个答案:

答案 0 :(得分:1)

您需要检测收音机是否已被选中或取消选中,如果未选中则收减,请尝试更改:

total = parseInt(total) + parseInt(price);

if(radio.checked){
    total = parseInt(total) + parseInt(price);
}
else{
    total = parseInt(total) - parseInt(price);
}

答案 1 :(得分:1)

据推测,你至少需要做这两件事:

  • price更改为value
  • 添加广播组名称

你可能还想做其他事情,但这里有一个相当简单的代码端口来做这两个。请注意,它不再需要您将实际的单选按钮传递给该函数。它每次重新计算。这意味着您可以更好地将事件侦听器附加到更高级别,而不必在标记中执行显式事件侦听器附件。

<html>
<head>
<script>
    total = 0;
    function Update_Subtotal() {
        var inputs = document.forms.form.elements, total = 0;;
        for (var i = 0, len = inputs.length; i < len; i++) {
            var input = inputs[i];
            if (input.checked) {
                total += parseFloat(input.value) || 0;
            }
        }
        document.getElementById("total").innerHTML = '£' + total;
}
</script>
</head>
<body>
<form name="form" method="post" action="">
    <fieldset>
        <legend>Option 1</legend> 
        <input name="opt1" type="radio" value="100" onclick="Update_Subtotal();" />Sub1
        <input name="opt1" type="radio" value="200" onclick="Update_Subtotal();" />Sub2
        <input name="opt1" type="radio" value="300" onclick="Update_Subtotal();" />Sub3
    </fieldset>
    <fieldset>
        <legend>Option 2</legend> 
        <input name="opt2" type="radio" value="10" onclick="Update_Subtotal();" />Sub1
        <input name="opt2" type="radio" value="20" onclick="Update_Subtotal();" />Sub2
        <input name="opt2" type="radio" value="30" onclick="Update_Subtotal();" />Sub3
</fieldset>
</form>
<div id="total"></div>
</body>
</html>

答案 2 :(得分:0)

在这种情况下改变主意意味着首先撤消您所做的选择,然后再制作另一个选择。撤消第一个选择意味着减去进行该选择时添加的金额。永远都没有减去。

你想要做的是找到一种方法来记住第一个选择。每个字段集的一个变量就足够了。