使用Javascript进行计算的多个语句

使用Javascript进行计算的多个语句,javascript,html,Javascript,Html,我正在尝试使用Javascript进行计算,它将从一个输入(月薪)到结果(税)进行计算,如下所示: 年收入扣除额(12000) 困难的部分来了,税收是按不同的水平计算的,所以如果年收入在6500到25000之间,税收应该是10%。如果25000之后还有更多的剩余,而少于40000,则应在之前10%的基础上再加15%的税,以此类推 例如如果年产量为60000,则计算如下: 60000 - 12000 = 48000 // deduction 25000 X (10/100) = 250

我正在尝试使用Javascript进行计算,它将从一个输入(月薪)到结果(税)进行计算,如下所示:

  • 年收入扣除额(12000)
  • 困难的部分来了,税收是按不同的水平计算的,所以如果年收入在6500到25000之间,税收应该是10%。如果25000之后还有更多的剩余,而少于40000,则应在之前10%的基础上再加15%的税,以此类推
例如如果年产量为60000,则计算如下:

 60000 - 12000 = 48000 // deduction
 25000 X (10/100)   = 2500 // 10% tax on 6500-25000 range
 48000 - 25000 = 23000 // first cut 25000
 23000 X (15/100) = 3450 // 15% tax on 25000-40000 range
 total tax will be 2500 + 3450 = 5950
代码:

<input type=text id="salary">
<div id="total"></div>
<script>
function calc(){
    var salary   = document.getElementById('salary').value;
    var annual   = salary * 12;
    var net      = annual - 12000;
    // Define Tax brackets
    var bracket1 = (10 / 100);
    var bracket2 = (15 / 100);
    if (net >= 6500){
        if ( net >= 6500 && net <= 25000 ) {
           var tax1 = (net * bracket1);
        }
        else if ( net >= 30000 && net <= 40000 ) {
           var tax2 = (net * bracket2);
        }

        var result = (tax1 + tax2) / 12; //monthly tax

    document.getElementById('total').innerHTML = result ;

}
</script>

函数计算(){
var salary=document.getElementById('salary')。值;
var年=工资*12;
净风险值=年-12000;
//定义税阶
变量括号1=(10/100);
变量括号2=(15/100);
如果(净>=6500){
如果(净值>=6500&&net=30000&&net
算法本身似乎有问题(你可能想回顾一下)
但是,假设我自己做了一些事情,这是可行的
看看你能改进什么


税
函数计算(){
风险值结果,tax1=0,tax2=0;
var salary=document.getElementById('salary')。值;
var年=工资*12;
净风险值=年-12000;
//定义税阶
变量括号1=(10/100);
变量括号2=(15/100);
如果(净>=6500){

如果(net>=6500&&net=30000&&net给出了示例,则此代码可能会帮助您开始学习逻辑

函数计算(){
var salary=document.getElementById('salary')。值;
var年=工资*12;
净风险值=年-12000;
控制台日志(工资、年薪、净额);
//定义税阶
变量括号1=(0.1);
var括号2=(0.15);
var-tax1=0;
var-tax2=0;
var runningNet=net;
如果(净>=6500){
如果(净>=25000){
tax1=2500;//2500*0.10,第1类的最大税额
runningNet=runningNet-25000;
tax2=runningNet*bracket2;//剩余的部分*bracket2
}
否则{
tax1=运行净*括号1;
}        
var结果=(parseFloat(tax1)+parseFloat(tax2));
var monthly=result/12;//月税
document.getElementById('total').innerHTML=result;
document.getElementById('monthly')。innerHTML=monthly;
}
}

计算

总数:
每月:
您的函数缺少一个结束括号。在
else if(net=30000
中,您可能是指
else if(net==30000
您缺少一个结束括号。请确保salary是一个数字,而不是字符串:var salary=parseInt(document.getElementById('salary')。值,10);@puro\u nervio可能需要使用
parseFloat()
,因为薪水可能有一个小数部分。也可以使用调试器。每个浏览器中都有一个调试器。如果(net==30000&&net@Teemu-woah,冷静点,牛仔。你真的认为它聪明(独立于语言)吗在特定的
if/else
语句中声明
var
?不,这并不聪明,您已经在代码中正确地解决了这个问题,但解释显然是错误的。@Teemu是的,这是我的错,我的意思是“globals”.作为一个更大的scopeWell,@Kareem,你可能不想读这个anwser:@Teemu别担心,它也不是我的。而且我没有标记它,你似乎很有道理:)。和平。
<html>
<head>
<title>TAX</title>
</head>

<script type="text/javascript">
function calc(){
    var result, tax1 = 0, tax2 = 0;

    var salary   = document.getElementById('salary').value;
    var annual   = salary * 12;
    var net      = annual - 12000;

    // Define Tax brackets
    var bracket1 = (10 / 100);
    var bracket2 = (15 / 100);

    if (net >= 6500) {
        if (net >= 6500 && net <= 25000) {
            tax1 = (net * bracket1);
        }
        else if (net >= 30000 && net <= 40000) {
            tax2 = (net * bracket2);
        }
        result = (tax1 + tax2) / 12; // monthly tax
    }

    document.getElementById('total').innerHTML = result;
    console.log(result);
}
</script>
<body>

<input type=text id="salary" onblur="calc();" value="0" />
<div id="total"></div>
</body>
</html>