我希望有人可以快速看一下这个并给我一些关于我做错的指示。我试着按照我在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 );
答案 0 :(得分:2)
我立即看到了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
答案 1 :(得分:0)
对我而言,第一件事就是你有多个具有相同id
属性的元素;这意味着当您执行$('#income').val()
之类的操作时,您可能会选择带有该ID的div
而不是输入,这就是您想要的。
确保ID始终是唯一的。