通过JS的实践,我制作了一个非常简单的应用程序,该应用程序计算了您在咖啡馆支付的小费多少。当我制定一个公式时,它完全可以算出我在解决问题时遇到的技巧,而我无法解释。如果我试图用一个公式计算所有数值,那么我的结果就是NaN,但是如果我做了几个新变量,我的结果就会是我所期望的。这是代码:
window.onload = function() {
const bill = document.getElementById('bill');
const company = document.getElementById('people');
const radioButtons = document.getElementsByName('service');
const calcButton = document.getElementById('calculator');
const resultDiv = document.getElementById('result-div');
function calcTips() {
let result;
let srv;
let billValue = parseFloat(bill.value);
let comValue = parseFloat(company.value);
for(let i = 0; i < radioButtons.length; i++) {
if(radioButtons[i].checked === true) {
switch(i) {
case 0:
svr = 30;
break;
case 1:
svr = 20;
break;
case 2:
svr = 15;
break;
case 3:
svr = 10;
break;
case 4:
svr = 0;
break;
}
}
}
// arithmetic operations
let temp = billValue / 100 * svr;
let temp2 = billValue + temp;
result = temp2 / comValue;
console.log(result);
}
calcButton.addEventListener('click', calcTips);
}
该代码运行良好,但是如果我制定一个公式:
result = (billValue + (billValue / 100 * svr)) / comValue;
返回NaN,你能解释一下为什么吗?
答案 0 :(得分:1)
您声明:
let srv;
但是这样使用:
let temp = billValue / 100 * svr;
^-------------
对于Fix更改,例如:
将let srv;
更改为let svr;
答案 1 :(得分:0)
NAN表示该值不是数字 因为方程中的某些变量不是数字 您没有为svr分配任何数字值,因此默认值为null,这将导致等式中的NaN