javascript - 我无法弄清楚下面的 javascript 代码有什么问题。我尝试将函数存储在变量中

标签 javascript function var

我已经根据收到的建议重写了整个代码,但似乎有一些东西我错过了,因为我仍然无法在数学运算中使用 var deducere 。我总是得到 NaN。对我的代码的任何建议都会非常有用,因为此时我已经没有想法了。看来这种方式是最好的学习方式。

function calculeazaVenit() {
        var venit_brut = document.getElementById("venit_brut").value;
        var selection = document.getElementById("select1").value;
        var cas = (10.5 / 100) * venit_brut;
        var cass = (5.5 / 100) * venit_brut;
        var somaj = (0.5 / 100) * venit_brut;
        var nr_tichete = document.getElementById("nr_tichete").value;
        var val_tichete = document.getElementById("val_tichete").value;
        var tichete = nr_tichete * val_tichete;
        var impozit = (16 / 100) * (venit + tichete);
        if (venit_brut != null) {
            document.getElementById("venit_brutx").innerHTML = Math.round(venit_brut);
            document.getElementById("cas").innerHTML = Math.round(cas);
            document.getElementById("cass").innerHTML = Math.round(cass);
            document.getElementById("somaj").innerHTML = Math.round(somaj);
            document.getElementById("venitx").innerHTML = Math.round(venit);
            document.getElementById("tichete").innerHTML = Math.round(tichete);
            document.getElementById("impozit").innerHTML = Math.round(impozit);
            document.getElementById("venit_net").innerHTML = Math.round(venit_net);
        }
        };


        function calculateDeducere(selection, venit_brut) {
        var deducere0 = (1 - (venit_brut - 1500) / 1500) * 300;
        var deducere1 = (1 - (venit_brut - 1500) / 1500) * 400;
        var deducere2 = (1 - (venit_brut - 1500) / 1500) * 500;
        var deducere3 = (1 - (venit_brut - 1500) / 1500) * 600;
        var deducere4 = (1 - (venit_brut - 1500) / 1500) * 800;
        if (selection == 0 && venitBrut <= 1500) {
            return 300;
        }
        if (selection == 0 && venitBrut > 1500 && venitBrut <= 3000) {
            return Math.ceil10(deducere0, 1);
        }
        if (selection == 1 && venitBrut <= 1500) {
            return 400;
        }
        if (selection == 1 && venitBrut > 1500 && venitBrut <= 3000) {
            return Math.ceil10(deducere1, 1);
        }
        if (selection == 2 && venitBrut <= 1500) {
            return 500;
        }
        if (selection == 2 && venitBrut > 1500 && venitBrut <= 3000) {
            return Math.ceil10(deducere2, 1);
        }
        if (selection == 3 && venitBrut <= 1500) {
            return 600;
        }
        if (selection == 3 && venitBrut > 1500 && venitBrut <= 3000) {
            return Math.ceil10(deducere3, 1);
        }
        if (selection == 4 && venitBrut <= 1500) {
            return 800;
        }
        if (selection == 4 && venitBrut > 1500 && venitBrut <= 3000) {
            return Math.ceil10(deducere4, 1);
        }
        if (document.getElementById("btn_deducere").checked == false) {
            document.getElementById("deducerex").innerHTML = 0;
        }
        if (venit_brut > 3000)  {
        return 0;
        }
        };

    var deducere = calculateDeducere(selection, venit_brut);
    var venit = venit_brut - (cas + cass + somaj + deducere);
    var venit_net = venit - impozit + deducere;

        document.getElementById("deducerex").innerHTML = Math.round(deducere);

最佳答案

var deducere0 = ...,
    deducere1 = ...,
    deducere2 = ...,    
    deducere3 = ...,
    deducere4 = ...;


function calculateFoo(selection, venitBrut) {
    if (selection == 0 && venitBrut <= 1500) {
        return 300;
    }
    if (selection == 0 && venitBrut > 1500 && venitBrut <= 3000) {
        return Math.ceil10(deducere0, 1);
    }
    if (selection == 1 && venitBrut <= 1500) {
        return 400;
    }
    if (selection == 1 && venitBrut > 1500 && venitBrut <= 3000) {
        return Math.ceil10(deducere1, 1);
    }
    if (selection == 2 && venitBrut <= 1500) {
        return 500;
    }
    if (selection == 2 && venitBrut > 1500 && venitBrut <= 3000) {
        return Math.ceil10(deducere2, 1);
    }
    if (selection == 3 && venitBrut <= 1500) {
        return 600;
    }
    if (selection == 3 && venitBrut > 1500 && venitBrut <= 3000) {
        return Math.ceil10(deducere3, 1);
    }
    if (selection == 4 && venitBrut <= 1500) {
        return 800;
    }
    if (selection == 4 && venitBrut > 1500 && venitBrut <= 3000) {
        return Math.ceil10(deducere4, 1);
    }
    if (document.getElementById("btn_deducere").checked == false) {
        return 0;
    }

    return 0;
};

var foo = calculateFoo(selection, venitBrut);
var venit = venitBrut - (cas + cass + somaj + foo);

console.log(venit);
  • 确保声明了 deducere01234
  • 添加一些console.log来检查函数返回的值
  • 你应该将 foo 更改为更合适的名称,我不太明白在计算什么

希望这有帮助:)

关于javascript - 我无法弄清楚下面的 javascript 代码有什么问题。我尝试将函数存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44229951/

相关文章:

c# - var 关键字和使用 namespace

php - 如何访问写入的文件到/var/test/

javascript - path.getTotalLength() 返回错误值

javascript - 警告不要在循环内创建函数

javascript - 如何在 knockout js 中使复选框的标签可点击?

从新加载的 div 调用函数的 jQuery

Python:如何将键从函数的变量传递给字典?

xcode - Swift "guard let"解包失败

javascript - 给定规则组合的正则表达式

Javascript 何时分割 vs 何时嵌套