我正在为一个计算机类开发项目,并且对JavaScript还是陌生的。我一直在获取NaN的输出,并且一直在寻找答案,但没有找到任何答案。 (项目是一个复利计算器,UI设计已完成。)
我不确定要尝试什么,因为我是JS新手。
var i = getNumber("amountInput");
var c = getNumber("compoundedInput");
var l = getNumber("lengthInput");
var r = getNumber("rateInput");
var rc = r / c;
var cl = c * l;
onEvent("calculateButton", "click", function() {
var rca = 1 + rc;
var p = Math.pow(rca, cl);
var f = i * p;
setText("outputArea", f);
});
输出应该是数字,但我得到的是NaN。
答案 0 :(得分:1)
您需要在onEvent
函数中设置所有变量,以便在用户单击按钮后获得输入的值。您是在首次加载页面时进行设置的,此时输入将为空。
onEvent("calculateButton", "click", function() {
var i = getNumber("amountInput");
var c = getNumber("compoundedInput");
var l = getNumber("lengthInput");
var r = getNumber("rateInput");
var rc = r / c;
var cl = c * l;
var rca = 1 + rc;
var p = Math.pow(rca, cl);
var f = i * p;
setText("outputArea", f);
});
答案 1 :(得分:0)
NaN
表示“不是数字”。 (mdn reference)
通常,当您尝试将非数字字符串显式(例如NaN
)或隐式(例如表达式{{1})转换为数字时,会看到parseFloat('3')
}会隐式尝试将“ a”转换为数字)。值得注意的是,在JS中除以零不会得到3 * 'a'
(它得到NaN
或infinity
);但是,-infinity
也给出了0/0
。
对于您的用例,您期望NaN
返回一个数字,但似乎并非如此。查看您的getNumber
代码(或将其复制到您的问题中)。
答案 2 :(得分:0)
如果要从html输入中获取数字,则不能使用getNumber()
<input type="text" id="number" >
<button id="submit">Submit</button>
并获取号码:
const number = documnet.getElementById('number');
const submitBtn = document.getElementById('submit');
submitBtn.addEventListener('click', () => {
const plusOne = 1 + Number(number.value);
console.log(plusOne)
});