我的工作只需要在購買時向加利福尼亞州居民銷售稅收取費用。我寫了我希望的JavaScript函數,當客戶從狀態的下拉列表中選擇加利福尼亞時,它將應用銷售稅。我給每個州賦予了「其他」和加利福尼亞州的價值或「CA」的價值。我的代碼每次計算銷售稅爲0,導致在選擇「CA」時稅收永遠不會應用於總計。我使用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) – enhzflep 2013-04-10 19:03:55
我是Javascript新手,我一直在爲此工作數天。我是自學成才的,所以我通過創建這個功能來嘗試和錯誤的方式。如果我可以自己解決,我不會註冊一個計算器帳戶,並在此張貼>。< – user2267371 2013-04-10 19:18:03
不能爭辯「不會註冊一個SO帳戶並在此張貼」<「: - )_BUT_我會指出這個問題應該包含一個最小(但是完整的!)代碼片段來證明這個問題。在沒有看到數據的情況下看到事情真的有點難。 – enhzflep 2013-04-10 19:27:06