0

我的工作只需要在加利福尼亚州居民购买时向他们收取销售税。我写了一个我希望的 javascript 函数,当客户从州的下拉列表中选择加利福尼亚时,它将应用销售税。我给每个州一个值“else”,给加利福尼亚一个值或“CA”。My code calculates the sales tax as 0 everytime, causing tax to never be applied to the grand total when "CA" is selected. 我在状态列表中使用 onSelect=UpdateCost(),在选中产品复选框时使用 onChange=UpdateCost()。我的代码的哪一部分阻止了税收的正确计算?

 function UpdateCost() {
   var stotal = 0;
   var ttotal = 0;
   var gtotal = 0;
   var tax = .0825;
   var gn, elem;
     for (i=0; i<12; i++) {
       gn = 'manual'+i;
       elem = document.getElementById(gn);
     if (elem.checked == true) { stotal += Number(elem.value); }
}
   var state = document.getElementById('state');
   var selection = state.options[state.selectedIndex].value;
 if (selection = 'CA') { ttotal += tax * stotal; }
 if (selection = 'else') {ttotal = 0;}
 if(!isNaN(ttotal)) {
    var calitax = ttotal.toFixed(2);
    document.getElementById('taxtotal').value = calitax;
    document.getElementById('subtotal').value = stotal.toFixed(2);
    }
   var gtotal = ttotal + stotal;
     if(!isNaN(gtotal)) {
   var grand = gtotal.toFixed(2);
   document.getElementById('grandtotal').value = grand;}

   } 

这是已简化的相关表单代码(无论如何我都可以得到它):

//in the header of course.
<script type="text/javascript" src="orderform.js"></script>

<form action=""  method="post">
<fieldset>
State: <select name="state" id="state" onSelect="UpdateCost()">
<option value="else" id="else">AL</option>
<option value="else" id="else">AK</option>
<option value="else" id="else">AZ</option>
<option value="else" id="else">AR</option>
<option value="CA" id="CA">CA</option>
</select>
<p>Select the manuals to order</p>

<input name="manual" type="checkbox" id='manual6' onclick="UpdateCost()" value="185">manual 1<br />
<input name="manual" type="checkbox" id='manual0' onclick="UpdateCost()" value="220">manual 2<br /><br />

<input name="manual" type="checkbox" id='manual7' onclick="UpdateCost()" value="155">manual 3<br />
<input name="manual" type="checkbox" id='manual1' onclick="UpdateCost()" value="185">manual 4<br /><br />

<h3>**SAVE $50** WHEN YOU BUY BOTH</h3><br />
<input name="manual" type="checkbox" id='manual8' onclick="UpdateCost()" value="290">manual 5<br />
Or:<br />
<input name="manual" type="checkbox" id='manual2' onclick="UpdateCost()" value="355">manual 6<br /><br />
<hr>
<input name="manual" type="checkbox" id='manual9' onclick="UpdateCost()" value="190">manual 7<br />
<input name="manual" type="checkbox" id='manual3' onclick="UpdateCost()" value="225">manual 8<br /><br />

<input name="manual" type="checkbox" id='manual10' onclick="UpdateCost()" value="125">manual 9<br />
<input name="manual" type="checkbox" id='manual4' onclick="UpdateCost()" value="150">manual 10<br /><br />
<h3>**SAVE $50** WHEN YOU BUY BOTH</h3><br />
<input name="manual" type="checkbox" id='manual11' onclick="UpdateCost()" value="265">11<br />
Or:<br />
<input name="manual" type="checkbox" id='manual5' onclick="UpdateCost()" value="325">12<br /><br />

Subtotal: <input name="subtotal" type="text" id="subtotal" value=""><br />
California Resident Tax: <input name="taxtotal" type="text" id="taxtotal" value=""><br />
Total: <input name="grandtotal" type="text" id="grandtotal" value=""><br />

</fieldset>

抱歉长了!!!谢谢你的帮助:D

4

1 回答 1

0

你有两个问题。第一个是您使用onSelect而不是onChange在状态选择字段中。然而,更大的问题在于您检查状态的功能。您使用的是 assignment=而不是 comparison ==

if (selection == 'CA') {    
    ttotal += tax * stotal;
}
if (selection == 'else') {
    ttotal = 0;
}

修复了 jsFiddle 示例

于 2013-04-10T20:53:00.270 回答