Calculating Sales Tax For A Us State In Javascript
Solution 1:
The first problem with your fiddle is that the taxRate()
function is not a global function and so it can't be called from an inline html attribute event handler. This is because by default JSFiddle wraps the JS in an onload
handler. Use the JS settings menu (from top-right corner of the JS window) to change the "load type" to one of the "no wrap" options.
Then you've got a problem getting the order total value, because you try to get the element .value
when it is a span, so you need to use .innerHTML
.
The next thing is that your state
variable is set equal to the value of the current selection of the select element. So it will be 'NJ'
, or 'AK'
, etc. (Or an empty string if nothing is selected.) So when you try to set the selection
variable to state.options[state.selectedIndex].value
that won't work because state
is a string. Test your existing state
variable against 'NJ'
:
if (state == 'NJ')
You also have a test if (selection == 'else')
which won't do anything because even if your selection
variable worked its value would never be the string'else'
. I think you just want an else
statement there, except that what that block actually does is just set order_taxes = 0
and order_taxes
has already been set to a default of 0
at the point of declaration. So you don't need that part at all.
Then you've got another if
testing for New Jersey that could be combined with the first one. It's setting a tax_percent
variable that isn't declared, so add a declaration for that with var
at the top of your function.
Also, because of the way JS does floating point maths, 100 * 0.07
comes out to be 7.000000000000001
. You probably want to round that off to two decimal places for the cents amount (which in this case would be no cents, but obviously if the order total wasn't such a round number you might get some number of cents in the taxes).
How do I pass tax_percent from this javascript into the html for submittal to Stripe?
One way is to add a hidden input to your form and set its value from JS:
<inputtype="hidden"id="tax_percent" name="tax_percent">
document.getElementById('tax_percent').value = tax_percent;
Putting that all together:
functiontaxRate() {
var tax_rate = .07;
var order_taxes = 0;
var tax_percent = 0;
var subtotal = document.getElementById("order_subtotal").innerHTML;
subtotal = parseInt(subtotal);
var total = 0;
var state = document.getElementById("state").value;
if (state === 'NJ') {
order_taxes += +(tax_rate * subtotal).toFixed(2);
tax_percent = +(tax_rate * 100).toFixed(2);
}
var el = document.getElementById('order_tax');
el.textContent = order_taxes;
var total = subtotal + order_taxes;
var el1 = document.getElementById('order_total');
el1.textContent = total;
document.getElementById('tax_percent').value = tax_percent;
}
Post a Comment for "Calculating Sales Tax For A Us State In Javascript"