我是 Javascript 的新手,我正在嘗試進行一個計算,該計算根據輸入到輸入中的數字而變化。然而,這些函式使輸出為 NaN,所以我想知道我是否可以將 NaN 轉換為正常數字(以便我可以將 hUeCalc 和 massCalc 相加并將其顯示為數字)以供使用,或者我是否必須使用其他選項進行計算。
也許 switch 和 case 可能是一種選擇,但我不太確定它們是否會產生我需要的效果。
在下面的代碼中,您可以看到按下按鈕時執行的函式。現在,當我單擊激活函式 calc 的按鈕時,我在 tax.innerHTML 中得到 NaN 而不是數字。
提前致謝。
function calc() {
let hubraum = Number(hubraumComponent.value);
let emission = Number(emissionComponent.value);
let masse = Number(masseComponent.value);
let hUeCalc = Number(function (){
if (Diesel.checked == true) {
((Math.ceil((hubraum/100)))*9.5) ((emission-95)*2);
}
else if (Benzin.checked == true) {
((Math.ceil((hubraum/100)))*2) ((emission-95)*2);
};
});
let masseCalc = Number(function (){
let masseValue;
if (masse <= 2000) {
masseValue = (Math.ceil((masse/200)*5.625));
}
else if (masse >= 3000) {
masseValue =(Math.ceil((masse/200)*6.01));
}
else if (masse >= 3500) {
masseValue = (Math.ceil(masse/200)*6.39);
};
});
// let masseValue = (Math.ceil (masse/200));
let berechnung = (hUeCalc masseCalc);
tax.innerHTML = (berechnung) "€";
console.log('Calc has been done');
console.log('hubraum value is ' hubraum);
console.log('emission value is ' emission);
console.log('masse value is ' masse);
console.log('hubraumcalc value is ' hUeCalc);
console.log('massecalc value is ' masseCalc);
}
這里還有 HTML incase 你想看到激活所有這些的按鈕
<div class="input-field-second-calc" onclick="calc()">
<input type="button" class="btn btn-outline-primary" value="berechnen">
<br>
<a id="tax"></a>
</div>
uj5u.com熱心網友回復:
你需要在你的兩個函式中回傳一個值!
當你這樣做時:
let hUeCalc = Number(function (){
if (Diesel.checked == true) {
((Math.ceil((hubraum/100)))*9.5) ((emission-95)*2);
}
else if (Benzin.checked == true) {
((Math.ceil((hubraum/100)))*2) ((emission-95)*2);
};
})
您基本上是說請將函式的回傳值轉換為數字并將其分配給hUeCalc. 但是因為函式什么都不回傳。它試圖將 undefined 轉換為數字。結果是 NaN 。
這同樣適用于:
let masseCalc = Number(function (){
let masseValue;
if (masse <= 2000) {
masseValue = (Math.ceil((masse/200)*5.625));
}
else if (masse >= 3000) {
masseValue =(Math.ceil((masse/200)*6.01));
}
else if (masse >= 3500) {
masseValue = (Math.ceil(masse/200)*6.39);
};
});
順便說一句,與:
if (masse <= 2000) {
masseValue = (Math.ceil((masse/200)*5.625));
}
else if (masse >= 3000) {
masseValue =(Math.ceil((masse/200)*6.01));
}
else if (masse >= 3500) {
masseValue = (Math.ceil(masse/200)*6.39);
};
你永遠不會走到最后else if,就像我們用 3700 嘗試它一樣。它不會在第一個 if 但在第二個匹配,因為 3700 大于 3000。您需要反轉兩個 else if 的順序。
并且您還需要為 2000 到 3000 之間的數字添加一個 else(如果它是可接受的值)
uj5u.com熱心網友回復:
如果您嘗試以下代碼,我認為它應該可以作業。正如你看到的,如果你想使用一個函式來賦值一個值,這個函式必須回傳一些東西,如果沒有,就沒有要分配的值。您還需要確保該函式被執行,如果您不這樣做,則它let hUeCalc = function(){}只是成為函式識別符號。
function calc() {
let hubraum = Number(hubraumComponent.value);
let emission = Number(emissionComponent.value);
let masse = Number(masseComponent.value);
let hUeCalc = Number(function (){
if (Diesel.checked == true) {
return ((Math.ceil((hubraum/100)))*9.5) ((emission-95)*2);
}
else if (Benzin.checked == true) {
return ((Math.ceil((hubraum/100)))*2) ((emission-95)*2);
};
}());
let masseCalc = Number(function (){
let masseValue;
if (masse <= 2000) {
return masseValue = (Math.ceil((masse/200)*5.625));
}
else if (masse >= 3000) {
return masseValue =(Math.ceil((masse/200)*6.01));
}
else if (masse >= 3500) {
return masseValue = (Math.ceil(masse/200)*6.39);
};
}()); // using () right after the function makes it so it get excecuted immediately
// let masseValue = (Math.ceil (masse/200));
let berechnung = (hUeCalc masseCalc);
tax.innerHTML = (berechnung) "€";
console.log('Calc has been done');
console.log('hubraum value is ' hubraum);
console.log('emission value is ' emission);
console.log('masse value is ' masse);
console.log('hubraumcalc value is ' hUeCalc);
console.log('massecalc value is ' masseCalc);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/341031.html
標籤:javascript 功能 计算器 计算
