NaN 由 nodeJS 中的值之和产生

NaN resulting from sum of values in nodeJS

我是 Javascript 的新手。但是我创建了一个接受输入的 HTML 代码,然后 NodeJS 在服务器上运行它来计算总和。我正确下载了这两个模块。但我似乎仍然认为 Nan 是数字的总和。

代码似乎对一位朋友有效。我将他的 JS 代码复制粘贴到我的代码中,仍然没有运气。

JS

const express = require("express");

const bodyParser = require("body-parser");

const app = express();

app.use(bodyParser.urlencoded({ extended: true }));

app.get("/", function(req, res) {
      res.sendFile(__dirname + "/index.html");
});

app.post("/", function(req, res) {
      console.log(req.body);
      var num1, num2, total = 0;
      num1 = req.body.num1;
      num2 = req.body.num2;
      total = num1 + num2;
      console.log(total);
      res.send("The result of the calculation is " + total);
});

app.listen(3000, function() {
     console.log("The server is running on port 3000.");
});

HTML

<form action="/" method="POST">
    <input type="text " name="num1 " placeholder="First Number " />
    <input type="text " name="num2 " placeholder="Second Number " />
    <button type="submit " name="submit ">Calculate</button>
</form>

删除 name 属性中的尾随 space,如果您要传递数字,为什么不将 type 设置为 number

并且其中一个值或两个值都作为 undefined 传递,因此您得到 NaN

2 个错误:

  • 你在名字中加了空格
  • 您使用文本而不是数字

正确代码如下:

<form action="http://localhost:3000/" method="POST">
    <input type="number" name="num1" placeholder="First Number" />
    <input type="number" name="num2" placeholder="Second Number" />
    <button type="submit" name="submit">Calculate</button>
</form>


const express = require("express");

const bodyParser = require("body-parser");

const app = express();

app.use(bodyParser.urlencoded({ extended: true }));

app.get("/", function(req, res) {
      res.sendFile(__dirname + "/index.html");
});

app.post("/", function(req, res) {
      console.log(req.body);
      var num1, num2, total = 0;
      num1 = +req.body.num1;
      num2 = +req.body.num2;
      total = num1 + num2;
      console.log(total);
      res.send("The result of the calculation is " + total);
});

app.listen(3000, function() {
     console.log("The server is running on port 3000.");
});

从名称中删除 space,使用类型编号,您也可以使用 parseInt

`<form action="/" method="POST">
    <input type="number" name="num1" placeholder="First Number " />
    <input type="number" name="num2" placeholder="Second Number " />
    <button type="submit " name="submit ">Calculate</button>
</form>

const express = require("express");

const bodyParser = require("body-parser");

const app = express();

app.use(bodyParser.urlencoded({ extended: true }));

app.get("/", function(req, res) {
      res.sendFile(__dirname + "/index.html");
});

app.post("/", function(req, res) {

      var num1, num2, total = 0;
      consol.log(req.body.num2)
      num1 = parseInt(req.body.num1);a
      num2 = parseInt(req.body.num2);
      total = num1 + num2;
      res.send("The result of the calculation is " + total);
});

app.listen(3000, function() {
     console.log("The server is running on port 3000.");
});`