我已经根据收到的建议重写了整个代码,但似乎有一些东西我错过了,因为我仍然无法在数学运算中使用 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/