[英]Javascript Income tax calculator
我希望有人可以快速浏览一下,并为我做错事情提供一些指导。 我尝试遵循我在JS Fiddle上找到的小费计算器程序,并且在尝试执行计算的过程中一直有效。
任何提示都将有所帮助!
谢谢!
JSFiddle: http : //jsfiddle.net/Shibi/pg6hg7hg/63/
HTML:
<form id="calculator" method="post">
<div>
<p><input value="" id="income"></input></p>
</div>
<select id="states" onchange="changetax(this)">
<option>Choose state</option>
<option value="0.4">Alabama</option>
<option value="0">Alaska</option>
<option value="0.56">Arizona</option>
<option value="0.65">Arkansas</option>
</select>
<div id="tax"></div>
<p><input type="submit" /></p>
<hr />
<p>Taxed Amount: <div id="tax"></div></p>
<p>Total: <div id="total"></div></p>
</form>
JS:
function changetax($this){
$("#tax").text($this.value>0?("Income Tax: " + $this.value + "%") : "");
}
function calculate() {
var income = $('#income').val();
var tax = $('#tax').val();
var taxedAmount = income*tax;
var total = income - taxedAmount;
}
$('#calculator').submit( calculate );
我立即看到2个问题。
这是将(val * 1)和parseInt()与非常通用的验证一起使用的示例。
function changetax($this){
$("#tax").text($this.value>0?("Income Tax: " + $this.value + "%") : "");
}
function calculate() {
var incomestr = $('#income').val();
var taxstr = $('#tax').val();
// convert values to int
var income = (incomestr*1);
var tax = parseInt(taxstr);
if(income > 0 && tax > 0){
var taxedAmount = income*tax;
var total = income - taxedAmount;
}
}
$('#calculator').submit( calculate );
编辑:
好的,我将离开上面的示例,但这是您尝试执行的工作示例。 我不得不改变一些事情。
jsFiddle: http : //jsfiddle.net/lookitstony/chn3t025/
HTML:
<div>
<p><input value="" id="income"></input></p>
</div>
<select id="states" onchange="changetax(this)">
<option>Choose state</option>
<option value="0.4">Alabama</option>
<option value="0">Alaska</option>
<option value="0.56">Arizona</option>
<option value="0.65">Arkansas</option>
</select>
<div id="tax"></div>
<p><button id="calculator">Calculate</button></p>
<hr />
<p>Taxed Amount: <span id="taxed"></span></p>
<p>Total: <span id="total"></span></p>
Javascript:
function changetax($this){
$("#tax").text($this.value>0?("Income Tax: " + $this.value + "%") : "");
}
function calculate(e) {
e.preventDefault();
var income = $('#income').val();
var tax = $('#states').val();
var taxedAmount = income*tax;
var total = income - taxedAmount;
$('#taxed').text(taxedAmount);
$('#total').text(total);
return false;
}
$(function(){
$('#calculator').click( calculate );
});
几乎忘记了这一点,我尝试在我回答的每个JS问题中都将其链接,因为它对我的JS技能产生了重大影响。 这里有一些设计模式可以挽救您的生命。 http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript
对我而言,第一件事是您有多个具有相同id
属性的元素; 这意味着,当您执行诸如$('#income').val()
,您可能会选择具有该ID的div
而不是您想要的输入。
确保ID始终是唯一的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.