【发布时间】:2020-07-28 09:37:02
【问题描述】:
我对这段代码的目标:这段代码应该随机生成一个数学方程,用户应该在其中输入结果(用户认为正确的结果)。然后计算机应将用户输入的输入(结果)与真实结果进行比较。如果结果正确,它应该控制台日志(“好”),如果它不正确,它应该控制台日志(“坏”),无论哪种方式,点击提交按钮后,网站应该刷新并随机生成一个新方程(并且这个过程会再次重复)。
问题:我有函数equationGenerator,它生成随机方程并计算结果。我需要在 node.js 的 app.get 函数中调用 equationGenerator 以便每次刷新网站时都会出现一个新函数,不幸的是该函数没有被调用,我现在在尝试加载网站时遇到错误.
代码如下:
////Installations (not the actual code)
const bodyParser = require("body-parser");
const express = require("express");
const ejs = require("ejs");
const app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static("public"));
////The actual code
function equationGenerator(){
var random = Math.round(Math.random() * 1);
var firstNumber = random ? (Math.random() * (10000) - 5000).toFixed(2) : (Math.round(Math.random() * (100)) - 50);
var secondNumber = random ? (Math.random() * (10000) - 5000).toFixed(2) : (Math.round(Math.random() * (100)) - 50);
var operations = random ? ["+", "-"] : ["*", "/"];
var randomOperation = operations[Math.round(Math.random() * 1)];
var expression = firstNumber + randomOperation + secondNumber;
var resultNotInterger = eval(expression);
var result = Number(resultNotInterger).toFixed(2);
return {
firstNumber,
secondNumber,
randomOperation,
result,
};
}
app.get("/", function(request, response){
equationGenerator()
response.render("index.ejs", {
firstNumber: firstNumber,
secondNumber: secondNumber,
randomOperation: randomOperation,
result: result
});
});
app.post("/", function(request, response){
const clientResponse = Number(request.body.clientResponse).toFixed(2);
if (clientResponse === result){
console.log("Good");
}else{
console.log("Bad");
}
response.redirect("/");
});
/////Server start code
app.listen(2109, function(err){
if (err){
console.log(err + "JHGKGFKUYGLUYFLIFYGUFYOIY:GYP");
}else{
console.log("Running on port 2109");
}
});
这里是 ejs 代码:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Math Ecercise</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
<h1>Math</h1>
<p><%= firstNumber %> <%= randomOperation %> <%= secondNumber %> = <%=
result %></p>
<form class="" action="/" method="post">
<div class="lediv">
<input class="form-control" type="text" name="clientResponse" value="" placeholder="result" autocomplete="off">
<button class="btn btn-primary btn-info" type="submit" name="button">Submit</button>
</div>
<p class="message">Haha</p>
</form>
</body>
</html>
如果您有任何困惑,我将非常乐意回答任何问题,因为我已经尝试解决这个问题好几天了。
非常感谢!
这里是下载到 wetransfer 中完整文件的链接 - https://wetransfer.com/downloads/8f193e12b9505c086728d3d5e976e11f20200728000447/51fde6。确保您使用 app1.1.js 进行尝试。我有很多版本,但这是当前版本。
如果您有任何困惑,我将非常乐意回答任何问题,因为我已经尝试解决这个问题好几天了。
非常感谢!
【问题讨论】:
-
equationGenerator` 返回一个对象,但你不使用它。
-
我想将来自equationGenerator'的数据传输到里面的对象:response.render(比如firstNumber),这个在app.get里面。
-
所以你引用了返回的对象
const eg = equationGenerator(); console.log(eg.firstNumber); -
@epascarello 是的,我确实想使用 app.get 中的对象,因为我希望它出现在我的 index.ejs 文件中
-
@ggorlen 我刚刚更新了问题,您需要帮助我,我还提供了文件的下载链接,谢谢提醒。
标签: javascript node.js ejs