我正在尝试使用JavaScript(Node.js,Express.js和用于模板的ejs)制作一个简单的to-do应用程序。我使用了一个表单来POST输入文本框的值,每次按下“提交”按钮时,一个包含任务文本和ID的JS对象被追加到数组“allTasks”中。
但是,我希望能够使用复选框划掉列表项。我可以使用CSS来完成,但是在每次“提交”之后,复选框都会被清除,因为列表是使用针对“tasksList”数组中的元素的 *for**循环 * 生成的。这就是它目前的工作方式:image
下面是我的index.ejs文件中的相关部分:
<form action="/submit" method="POST">
<label for="item">New item...</label>
<input type="text" id="task" name="task" required />
<input type="submit" value="Submit" />
</form>
<form action="/checked" method="POST">
<% for(i=0; i<locals.tasksList.length; i++) {%>
<li>
<input type="checkbox">
<label for="<%= locals.taskId %>"> <%= (locals.tasksList[i]["newTask"])%> </label>
</li>
<%}%>
</form>
字符串
这是我的index.js文件中的相关部分:
var allTasks = [];
app.post("/submit", (req, res) => {
var newTask = req.body["task"];
var idNumber = allTasks.length;
allTasks.push({ idNumber, newTask });
res.render(__dirname + "/views/index.ejs", {
tasksList: allTasks,
taskId: idNumber,
});
});
app.post("/checked", (req, res) => {
console.log(req.body);
});
型
解决此问题的一种方法是将已检查的元素存储在index.js文件中的数组中,类似于allTasks数组。我试图通过使用控制台日志来获取复选框的值(勾选或不勾选),但这导致一个空对象被打印到控制台。对于这个问题的解决方案或任何更好的解决方案将非常感激。
1条答案
按热度按时间9w11ddsr1#
如果您要在恢复数据时预选复选框,则需要将“值”与“选中”条件进行比较。您还需要添加一个通用名称。