基本上,我有两个不同的函数,它们根据HTML表单输入执行不同的计算。
我需要第3个函数从每个函数中取一个变量来执行最后一次数学计算。
如果不将变量设为全局或组合函数,有没有办法做到这一点?
以下是功能:
function getStateTax(){
var income = salaryBox.value;
var sel = document.getElementById("state");
var state = sel.options[sel.selectedIndex].value;
var rate = taxRates[state];
var el = document.getElementById("rate");
el.innerHTML = rate;
stateTaxElement.innerHTML = "Your state tax amount is: $" + Math.round(((income * (1 + rate)) - income) * 100) / 100;
}
function getFedTax() {
var fedTax = 0;
var income = salaryBox.value;
if (document.getElementById("single").checked) {
if (income <= 8350) {
fedTax = income * .10;
} else if (income <= 33950) {
fedTax = 8350 * 0.10 + (income - 8350) * 0.15;
} else if (income <= 82250) {
fedTax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (income - 33950) * 0.25;
} else if (income <= 171550) {
fedTax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (82250 - 33950) * 0.25 + (income - 82250) * 0.28;
} else if (income <= 372950) {
fedTax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (82250 - 33950) * 0.25 + (171550 - 82250) * 0.28 + (income - 171550) * 0.33;
} else {
fedTax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (82250 - 33950) * 0.25 + (171550 - 82250) * 0.28 + (372950 - 171550) * 0.33 + (income - 372950) * 0.35;
}
}
if (document.getElementById("jointorwidow").checked) {
if (income <= 16700) {
fedTax = income * 0.10;
} else if (income <= 67900) {
fedTax = 16700 * 0.10 + (income - 16700) * 0.15;
} else if (income <= 137050) {
fedTax = 16700 * 0.10 + (67900 - 16700) * 0.15 + (income - 137050) * 0.25;
} else if (income <= 208850) {
fedTax = 16700 * 0.10 + (67900 - 16700) * 0.15 + (137050 - 67900) * 0.25 + (income - 137050) * 0.28;
} else if (income <= 372950) {
fedTax = 16700 * 0.10 + (67900 - 16700) * 0.15 + (137050 - 67900) * 0.25 + (208850 - 137050) * 0.28 + (income - 208850) * 0.33;
} else {
fedTax = 16700 * 0.10 + (67900 - 16700) * 0.15 + (137050 - 67900) * 0.25 + (208850 - 137050) * 0.28 + (372950 - 208850) * 0.33 + (income - 372950) * 0.35;
}
}
if (document.getElementById("separate").checked) {
if (income <= 8350) {
fedTax = income * 0.10;
} else if (income <= 33950) {
fedTax = 8350 * 0.10 + (income - 8350) * 0.15;
} else if (income <= 68525) {
fedTax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (income - 33950) * 0.25;
} else if (income <= 104425) {
fedTax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (68525 - 33950) * 0.25 + (income - 68525) * 0.28;
} else if (income <= 186475) {
fedTax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (68525 - 33950) * 0.25 + (104425 - 68525) * 0.28 + (income - 104425) * 0.33;
} else {
fedTax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (68525 - 33950) * 0.25 + (104425 - 68525) * 0.28 + (186475 - 104425) * 0.33 + (income - 186475) * 0.35;
}
}
if (document.getElementById("head").checked) {
if (income <= 11950) {
fedTax = income * 0.10;
} else if (income <= 45500) {
fedTax = 11950 * 0.10 + (income - 11950) * 0.15;
} else if (income <= 117450) {
fedTax = 11950 * 0.10 + (45500 - 11950) * 0.15 + (income - 45500) * 0.25;
} else if (income <= 190200) {
fedTax = 11950 * 0.10 + (45500 - 11950) * 0.15 + (117450 - 45500) * 0.25 + (income - 117450) * 0.28;
} else if (income <= 372950) {
fedTax = 11950 * 0.10 + (45500 - 11950) * 0.15 + (117450 - 45500) * 0.25 + (190200 - 117450) * 0.28 + (income - 190200) * 0.33;
} else {
fedTax = 11950 * 0.10 + (45500 - 11950) * 0.15 + (117450 - 45500) * 0.25 + (190200 - 117450) * 0.28 + (372950 - 190200) * 0.33 + (income - 372950) * 0.35;
}
}
fedTaxElement.innerHTML = "Your federal tax amount is: $" + Math.round(fedTax * 100) / 100;
}
我需要做的是做第三个函数并将fedTax和第一个收入变量加在一起,然后从一个新变量中减去它们。
答案 0 :(得分:1)
javascript中的函数具有返回值的能力(就像在大多数编程语言中一样)。
这意味着当函数执行完毕后,您可以return
一个特定的值。
返回结果的一个简单示例是一个简单的添加函数:
var add = function(a, b) {
return a + b;
}
var result = add(20, 30); // result is 50
console.log(result);
当然这是一个不好的例子,因为+
运算符允许你添加数字或连接字符串,但它仍然显示了return
的作用。
如果您在该行中仅使用return a + b;
替换a + b;
,则不会返回任何值。
现在假设我们有一个带3个参数的函数,前两个将相互添加,第三个将从结果中减去。
我们可以使用嵌套在函数中的add
方法返回一个我们可以继续计算的结果。
此功能如下所示:
var custom_calc = function(a, b, c) {
var add_res = add(a, b);
return (add_res - c);
}
var result = custom_calc(10, 20, 20); // result is 10
console.log(result);
因此,在前两个函数中,您将希望每个函数的最后一行是return
语句,返回第三个函数中所需的变量。在我的示例中,我们使用add
来获取结果,将其存储在变量中,然后我们使用该变量进行进一步的计算,然后返回结果。
这同样适用于你的情况,祝你好运!