Javascript 如何从一次单击按钮删除EJS中的数组项?
我正在创建一个待办事项列表,需要帮助在EJS中添加一个按钮,该按钮可以从数组Javascript 如何从一次单击按钮删除EJS中的数组项?,javascript,node.js,button,onclick,ejs,Javascript,Node.js,Button,Onclick,Ejs,我正在创建一个待办事项列表,需要帮助在EJS中添加一个按钮,该按钮可以从数组itemArr中删除对象。我通过for循环显示我的项,它们是数组中的对象。每个对象都有名称、开始时间、结束时间和id itemArr.push({name:newItem, st:starttime, et:endtime, id:id}); 有没有办法创建一个onclick按钮,该按钮可以从数组中删除一个对象,从而将其从“待办事项”列表中删除?我可以在html中轻松删除它,但当我添加一个新项目时,数组将刷新,列表将重
itemArr
中删除对象。我通过for循环显示我的
项,它们是数组中的对象。每个对象都有名称、开始时间、结束时间和id
itemArr.push({name:newItem, st:starttime, et:endtime, id:id});
有没有办法创建一个onclick按钮,该按钮可以从数组中删除一个对象,从而将其从“待办事项”列表中删除?我可以在html中轻松删除它,但当我添加一个新项目时,数组将刷新,列表将重新出现,因此我必须将其从数组中删除
目前,这是我的EJS代码,其中列表由for循环生成,res.render显示itemArr绑定到ITEMARRAY的位置
<body>
<h2 style="text-decoration: underline;"> To do:</h2>
<ol type="1">
<% for (var i=0;i<ITEMARRAY.length;i++){ %>
<li> <%= ITEMARRAY[i].name %> | <%= ITEMARRAY[i].st %> - <%= ITEMARRAY[i].et %> <input type="checkbox"> <button onclick="myFunction(i)" id="remove">X</button> </li>
<% } %>
</ol>
<script>
function myFunction() {
var x = document.getElementById("remove").parentNode.remove();
}
</script>
要做:
TL;博士EJS是一种服务器端渲染解决方案,因此您不能这样做
因为EJS是一个SSR解决方案,所以所有的呈现都发生在服务器上,然后客户端收到一个HTML页面。从现在起,该页面就存在于浏览器中,要更改它,需要使用一些浏览器JS代码。答案是使用mongodb,然后通过按钮发出post请求
app.get("/", function (req, res) {
res.render("list", {ITEMARRAY: itemArr}); //pass an object into list.ejs with keyval pair
});
app.post("/", function(req,res){
var newItem = req.body.newItem;
var starttime = req.body.startTime;
var endtime = req.body.endTime;
var id = 0;
//checking validity of range
var start = parseInt(starttime.split(":"));
var end = parseInt(endtime.split(":"));
var difference = (end - start) / (86400000 * 7);
if (difference < 0) {
// throw new Error("The start time must come before the end time.");
res.render("fail");
}
else
itemArr.push({name:newItem, st:starttime, et:endtime, id:id}); //if all ok, then push to arr
sortList(itemArr);
res.redirect("/");
})