【发布时间】:2013-04-02 17:39:41
【问题描述】:
我的工作只需要在加利福尼亚州居民购物时向他们收取销售税。我写了我希望的 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
【问题讨论】:
-
为什么不打开调试器让浏览器告诉你,而不是我们中的一个? (F12 = IE, Ctrl-Shift-I = Chrome, FF, Opera)
-
我是 Javascript 的超级新手,我已经为此工作了好几天。我是自学成才的,所以我通过创建这个函数来反复试验。如果我能自己解决,我就不会注册一个 stackoverflow 帐户并在此处发布>.
-
不能与“不会注册一个 SO 帐户并在此处发布 > 但是 我会指出问题应该包括演示问题的最小(但完整!)代码sn-p。在不查看数据的情况下看到工作真的有点困难..
-
另外,刚刚打开 Chrome 的调试器,它并没有表明我的代码有任何问题,所以我想这不是我的代码“错误”而是我没有使用正确的代码/订单来计算销售税。我只是不知道正确的代码行是什么:/我可以添加它所绑定的表单的片段
-
混蛋!调试器还具有可用的单步和断点。您可以单步执行函数的每一行并检查其中任何/所有变量的值。这可能有助于隔离问题。但是,是的,它处理的 html 副本将有助于提供解决方案。 :-)
标签: javascript options-menu onselect sales-tax