希望有人可以帮助我!有一个简单的订单列表,但如果有人点击一个选项,但后来改变主意并点击一个不同的选项,它只是不断添加值...不知道如何解决它...代码如下
<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
提前感谢您的帮助!
詹姆斯
答案 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)
在这种情况下改变主意意味着首先撤消您所做的选择,然后再制作另一个选择。撤消第一个选择意味着减去进行该选择时添加的金额。永远都没有减去。
你想要做的是找到一种方法来记住第一个选择。每个字段集的一个变量就足够了。