如何将我的函数参数作为数字而不是“NaN”进行交互/输出?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将我的函数参数作为数字而不是“NaN”进行交互/输出?相关的知识,希望对你有一定的参考价值。

所以我收到了从我的入门课程到javascript的任务,我们还没有那么远,所以我目前没有很多关于这个主题的知识,但是我被困在任务的这一部分。分配是制作一个简单的计算器,它能够使用四个基本函数(+, - ,*,/),用两个参数调用该函数并输出结果。这是javascript代码:

"use strict";
var x = document.getElementById('nummer1').value;
var y = document.getElementById('nummer2').value;

function add(p1, p2) {
return Number(p1) + Number(p2);
}

function subtract(p1, p2) {
return p1 - p2;
}

function multiply(p1, p2) {
return p1 * p2;
}

function divide(p1, p2) {
return p1 / p2;
}

现在的html

<input type="number" name="nr1" id="nummer1">
<input type="number" name="nr2" id="nummer2"><br><br>
<button type="button" onclick="document.getElementById('demo').innerHTML = add(x, y)">Add</button>
<button type="button" onclick="document.getElementById('demo').innerHTML = subtract(x, y)">Subtract</button>
<button type="button" onclick="document.getElementById('demo').innerHTML = multiply(x, y)">Multiply</button>
<button type="button" onclick="document.getElementById('demo').innerHTML = divide(x, y)">Divide</button>
<p>The answer is: <span id="demo"></span></p>

现在的问题是,每当我尝试使用其中一个按钮时,输出结果为“NaN”。我似乎无法弄清楚为什么会这样。我已经做到这一点,变量x和y是用户输入的值,我已经指定它们是数字。我不是将它们除以零或类似的东西。他们不应该只是正常计算吗?我哪里错了?如果这有任何区别,我通常将js代码放在head部分。

答案

现在的问题是,每当我尝试使用其中一个按钮时,输出结果为“NaN”

因为单击这些按钮时不会获取xy的最新值。

做了

function add() {
  var p1 = document.getElementById('nummer1').value;
  var p2 = document.getElementById('nummer2').value;
  return Number(p1) + Number(p2);
}

function subtract(p1, p2) {
  var p1 = document.getElementById('nummer1').value;
  var p2 = document.getElementById('nummer2').value;
  return p1 - p2;
}

function multiply(p1, p2) {
  var p1 = document.getElementById('nummer1').value;
  var p2 = document.getElementById('nummer2').value;
  return p1 * p2;
}

function divide(p1, p2) {
  var p1 = document.getElementById('nummer1').value;
  var p2 = document.getElementById('nummer2').value;
  return p1 / p2;
}
<input type="number" name="nr1" id="nummer1">
<input type="number" name="nr2" id="nummer2"><br><br>
<button type="button" onclick="document.getElementById('demo').innerHTML = add()">Add</button>
<button type="button" onclick="document.getElementById('demo').innerHTML = subtract()">Subtract</button>
<button type="button" onclick="document.getElementById('demo').innerHTML = multiply()">Multiply</button>
<button type="button" onclick="document.getElementById('demo').innerHTML = divide()">Divide</button>
<p>The answer is: <span id="demo"></span></p>

以上是关于如何将我的函数参数作为数字而不是“NaN”进行交互/输出?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript数学函数不起作用并返回Nan

为啥我的代码在尝试显示 Math.random 值时显示 NaN 而不是整数?

在javascript中获取NaN而不是数字[重复]

如何将长双打与 qsort 以及关于 NaN 进行比较?

如果值不是数字,为啥我的函数不会将我的长度加一

使用 InsertOne/UpdateOne 在 DB 中添加值 - 如果找到以前的值;返回 NaN 而不是实际数字