2014-09-04 4 views
0

Я ранее размещал код аналогичным образом, и у меня все еще возникают проблемы с ним. на этот раз я получаю 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> 
+0

Вы добавляя налог к ​​входной сумме, а не умножая ее. – Barmar

+0

@Bijan Он делает это так, что он будет преобразован из строки в число, так что '+' будет делать добавление, а не конкатенацию. Кроме того, что нужно преобразовать, это 'inputAmount'. – Barmar

ответ

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. Вы должны округлить конечный результат, потому что люди не хотят видеть дробные пенни.

DEMO

Когда я ввести сумму $ 10, 7% налог, 25% наконечник, общая сумма составляет $ 13,20.

0

Использовать Number(input.value) каждым входом для преобразования значений строк в числа. Вы можете использовать parseInt() или parseFloat вместо Number(), если хотите. Первый преобразует в целое число, второй преобразует в числа с десятичными точками.

Btw забыть overusage о () и *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; 
Смежные вопросы