JS的新手,无法解决School Project中的错误

时间:2019-04-15 18:36:30

标签: javascript

我正在为一个计算机类开发项目,并且对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。

3 个答案:

答案 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)

JS中的

NaN表示“不是数字”。 (mdn reference)

通常,当您尝试将非数字字符串显式(例如NaN)或隐式(例如表达式{{1})转换为数字时,会看到parseFloat('3') }会隐式尝试将“ a”转换为数字)。值得注意的是,在JS中除以零不会得到3 * 'a'(它得到NaNinfinity);但是,-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)
});