我有一个使用node.js和express的计算器网络应用程序。我试图使按钮进行加,减,乘和除。我有一个仅使用一个res.send();的POST请求,但是当我尝试使用if语句发出多个请求时,出现以下错误:ReferenceError:未定义getElementById。我在.js文件中使用了getElementById。我似乎无法找到一种对每个按钮使用多个请求的方法,因为我是新来表达的人。
math.html
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Calculator</title>
</head>
<body>
<h1>Calculator</h1>
<form action="/math" method="post">
<input type="text" name="n1" placeholder="First Number" >
<input type="text" name="n2" placeholder="Second Number" >
<button type="submit" name="add">+</button>
<button type="submit" name="subtract">-</button>
<button type="submit" name="multiply">*</button>
<button type="submit" name="divide">/</button>
</form>
</body>
</html>
calculator.js
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.get("/math", function(req, res) {
res.sendFile(__dirname + "/math.html");
});
app.post("/math", function(req, res) {
var num1 = Number(req.body.n1);
var num2 = Number(req.body.n2);
var add = num1 + num2;
var subtract = num1 - num2;
var multiply = num1 * num2;
var divide = num1 / num2;
//create if statements for each button click to add multiply etc...
if(getElementById('button').name="add") {
res.send("Answer: " + add);
}
if (getElementById('button').name="subtract") {
res.send("Answer: " + subtract);
}
if (getElementById('button').name="multiply") {
res.send("Answer: " + multiply);
}
else {
res.send("Answer: " + divide);
}
});
预期结果:单击每个数学符号可以计算方程式。 实际结果:ReferenceError:未定义getElementById
答案 0 :(得分:1)
我想你把事情搞混了。
getElementById
是window
对象的属性,因此只能在浏览器上下文中访问。
https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById
您正在尝试在NodeJS上下文中访问getElementById
,该上下文显然不包含该引用。
您要查找的值可能在express的req
回调属性中可用。我还没有测试过。
答案 1 :(得分:0)
我建议您通过req正文发送您要查找的数据,您可以通过在客户端使用AJAX来实现。一旦您通过AJAX发送了req,就可以使用点符号来访问它。
一个示例:req.query.name将从带有以下链接的HTTP arg中获取名称,例如localhost:1234 / myapp?name = helloworld! 或抓住您通过AJAX发布/获取的内容
像上面提到的那样,您不应将客户端代码用于后端逻辑。