销售和小费计算器

时间:2014-09-04 22:49:58

标签: javascript function calculator

我以前用类似的方式发布了代码,但我仍然遇到问题。这次我将100.0712.5作为帐单,10作为销售税,7作为提示,我得到25。我对Javascript编码很陌生,而且我花了好几个小时试图解决这个问题,我需要帮助。

<html> 
<head> 

<script type="text/javascript"> 
function applyTax(){ 


  var inputAmount = document.getElementById( 'dollars' ).value; 
  var salesTax = document.getElementById( 'tax' ).value;
  var tip = document.getElementById( 'tip' ).value; 
  var totalAmount = (salesTax/100) + (inputAmount);
  var tipprcnt = (tip/100) * (inputAmount);
  var Grandtotal = (inputAmount + (totalAmount*1) + (tipprcnt*1));

  //document.getElementById( 'requestedAmount' ).innerHTML = tipprcnt; 
  //document.getElementById( 'requestedTax' ).innerHTML = totalAmount;
  document.getElementById( 'requestedGrand' ).innerHTML = Grandtotal; 
} 

</script> 

</head> 
<body> 

<h1>Sales Tax + Tip Calculator</h1>
<p>Type in your price (dollar amount). Click the &quot;Calculate&quot; button to receive your total.
</p>
<p>
  What is the bill amount?: $<input type="text" id="dollars" /> <br>
  What is the sales tax?:<input type="text" id="tax" />%<br>
  how much do you want to tip?:<input type="text" id="tip" />% 
  <input type="button" onclick="applyTax();" value="Calculate" /> 

</p>
</h2>The Grand Total is:</h2>
<div id="requestedAmount"> </div> 
<div id="requestedTax"> </div> 
<div id="requestedGrand"> </div>
<p><a href="http://jasonhuang.myweb.usf.edu/lis4365/index.html">Home</a>
</body> 
</html>

3 个答案:

答案 0 :(得分:0)

您将它们添加为字符串,而不是使用parseFloat

http://plnkr.co/edit/6pN2Ug5qxcOSUjE5AnhJ?p=preview

答案 1 :(得分:0)

function applyTax(){ 
  var inputAmount = parseFloat(document.getElementById( 'dollars' ).value); 
  var salesTax = parseFloat(document.getElementById( 'tax' ).value);
  var tip = parseFloat(document.getElementById( 'tip' ).value); 
  var taxprcnt = (salesTax/100) * (inputAmount);
  var tipprcnt = (tip/100) * (inputAmount);
  var Grandtotal = inputAmount + taxprcnt + tipprcnt;

  document.getElementById( 'requestedGrand' ).innerHTML = Grandtotal.toFixed(2); // Round to 2 decimals
} 
  1. 您应该使用parseFloat()将输入转换为数字。
  2. 您需要将输入金额乘以税率,而不是添加它们。
  3. 你应该完成最终结果,因为人们不希望看到分数便士。
  4. DEMO

    当我输入10美元金额,7%税金,25%小费时,总金额为13.20美元。

答案 2 :(得分:0)

每个输入使用Number(input.value)将字符串值转换为数字。如果需要,您可以使用parseInt()parseFloat代替Number()。第一个转换为整数,第二个转换为带小数点的数字。

顺便说一句,忘记了()*1的过度使用,这对其他人来说只是噪音......

你的变量名称令人困惑,但我想你想要这样的东西:

var amountInput = document.getElementById("dollars");
var taxInput = document.getElementById("tax");
var tipInput = document.getElementById("tip");

var amount = Number(amountInput.value);
var taxPercent = Number(taxInput.value);
var tipPercent = Number(tipInput.value);

var grandTotal = Math.round(amount * (100 + taxPercent + tipPercent)) / 100;

var grandTotalOutput = document.getElementById("requestedGrand");
grandTotalOutput.innerHTML = grandTotal;