我是JavaScript的全新用戶,並且僅將該課程作爲要求。我必須爲這個班級訂購我幾乎已經工作的訂單,但是當我添加數量時,$ NaN彈出到我的最終總計中,並且我無法獲得稅號和最終總數以四捨五入到小數點後兩位地方。任何幫助將不勝感激!試圖刪除NaN並舍入合計
<!DOCTYPE html>
<html>
<head>
<title> Order Form Project </title>
<style>
/* Style the input box */
.tbl
{
border: 2px solid green;
{
.center
{
text-align: center;
}
.right
{
text-align: right;
}
.left
{
text-align: left;
}
.inBox
{
text-align: right;
width: 50px;
border: 1px green;
}
/* Style the button */
.btn
{
width: 90px; /* Fixed size of 120px */
font-size: 0.9em; /* Larger font */
font-weight:bold; /* Bold */
align: left;
}
.btn:hover
{
background-color: pink; /* Change mouse over color */
}
</style>
<script type="text/javascript">
function count(a,p,s)
{
a.line_sum[p].value = a.line[p].value * s;
a.line_sum[p].value = Math.ceil(a.line_sum[p].value * 1000) /1000;
a.line_sum[p].value = Math.floor(a.line_sum[p].value * 1000) /1000;
a.line_sum[p].value = Math.round(a.line_sum[p].value * 100)/100;
if(a.line_sum[p].value == "NaN")
{
alert("Error: Check for mistakes");
a.line[p].value = a.line[p].value.substring(0, a.line[p].value.length-1);
a.line_sum[p].value = a.line[p].value * s;
if(a.line_sum[p].value == "0") a.line_sum[p].value = "";
}
else
{
var gt = 0;
for(i=0; i < a.line_sum.length; i++)
{
gt += Math.ceil(a.line_sum[i].value * 1000) /1000;
}
gt = Math.round(gt * 1000)/1000;
a.grand_total.value = "$ " + gt;
decimal(a);
}
}
function get_data(a)
{
// var order_data = "This Order is ...\n";
// for(i=0; i < a.line.length; i++)
// {
// if(a.line[i].value == "") a.line[i].value = "0";
// order_data += "Line " +i+ " = "+a.line[i].value +" Qty\n";
// }
// if(a.grand_total.value == "") a.grand_total.value = "Nil";
// order_data += "Total Order Value = " + a.grand_total.value;
// document.g.order.value = order_data;
var apples = 0 + document.getElementById("apples_total").value;
var grapes = 0 + document.getElementById("grapes_total").value;
var pears = 0 + document.getElementById("pears_total").value;
var sub_total = 0;
var tax_total = 0;
var grand_total = 0;
sub_total = +apples + +grapes + +pears;
tax_total = +sub_total * +0.06;
grand_total = +sub_total + +tax_total;
debugger;
document.getElementById("sub_total").value = sub_total;
document.getElementById("tax_total").value = tax_total;
document.getElementById("grand_total").value = grand_total;
}
function decimal(a)
{
for(i=0; i<a.line_sum.length; i++)
{
var d = a.line_sum[i].value.indexOf(".");
if(d == -1 && a.line[i].value != 0) a.line_sum[i].value += ".00";
if(d == (a.line_sum[i].value.length-2)) a.line_sum[i].value += "0";
if(a.line_sum[i].value == "00") a.line_sum[i].value="";
}
d = f.grand_total.value.indexOf(".");
if(d == -1) f.grand_total.value += ".00";
if(d == (f.grand_total.value.length-2)) f.grand_total.value += "0";
}
function send_data(g)
{
get_data(document.a);
if(document.a.grand_total.value == "Zero")
{
var conf = confirm("No items are entered");
if(conf)g.submit(); else init();
}
else g.submit();
}
</script>
<body>
<form name="a">
<table color="solid green" border="2" width="300" cellpadding="4" cellspacing="0" summary="">
<tbody>
<tr>
<td colspan="4" align="center"><b>Order Form</b></td>
</tr>
<tr>
<th>Quantity</th>
<th>Item</th>
<th>Unit Price</th>
<th align="right">Extension</th>
</tr>
<tr>
<td><input name="line" type="text" size="10" value="" onkeyup="count(this.form,0,5.49)"></td>
<th>Apples</th><td class="right">$5.49</td><td align="right"><input name="line_sum" type="text" size="10" id="apples_total" readonly></td>
</tr>
<tr>
<td><input name="line" type="text" size="10" value="" onkeyup="count(this.form,1,7.49)"></td> <th>Pears</th><td class="right">$7.49</td>
<td align="right"><input name="line_sum" type="text" size="10" id="pears_total" readonly></td></tr>
<tr>
<td><input name="line" type="text" size="10" value="" onkeyup="count(this.form,2,6.49)">
</td><th>Grapes</th><td class="right">$6.49</td><td align="right"><input name="line_sum" type="text" size="10" id="grapes_total" readonly></td></tr>
<tr><td><input name="line" type="text" size="10" value="" onkeyup="count(this.form,3,)"></td>
<th colspan="2" align="right">Totals</th><td><input name="line" type="text" size="10" id="sub_total" readonly"></td></tr>
<tr><th colspan="3" align="right"> Tax @ 6%</th><td><input name="line" type="text" size="10" id="tax_total" readonly></td></tr>
<tr><td colspan="1" align="center"><input type="button" value="Compute" onclick="get_data(this.form)"></td><th colspan="2" align="right"> Final Total</th><td><input name="line_sum" type="text" size="10" id="grand_total" readonly>
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
這方面的工作,但我只是想說萬物編程的愛,請不要使用單個字母的變量名。謝謝=) – mhodges
NaN意味着不是一個數字。做一個console.log(gt)並找出它爲什麼沒有你期望的值 – Ben