Javascript 节点中的空数组
我在节点中构建应用程序待办事项列表,我一直在想当我按clear清空所有任务时该怎么做 我想做的是,当我想按下清除按钮时,我想清空数组,这样它们就会被清除 这是我的密码: 模板Javascript 节点中的空数组,javascript,node.js,ejs,Javascript,Node.js,Ejs,我在节点中构建应用程序待办事项列表,我一直在想当我按clear清空所有任务时该怎么做 我想做的是,当我想按下清除按钮时,我想清空数组,这样它们就会被清除 这是我的密码: 模板List.ejs <%- include("header") -%> <div id="heading" class="box"> <h1><%= listTitle %></h1> </div
List.ejs
<%- include("header") -%>
<div id="heading" class="box">
<h1><%= listTitle %></h1>
</div>
<div class="box">
<% for(let i = 0; i < newListItem.length; i++ ){ %>
<div class="item">
<input type="checkbox" />
<p><%= newListItem[i] %></p>
</div>
<% } %>
<form class="item" action="/" method="POST">
<input
type="text"
name="newItem"
placeholder="New Item"
autocomplete="off"
required
/>
<!-- prettier-ignore -->
<button class="btn" name="list" type="submit" value=<%= listTitle %> >+</button>
</form>
<form action="/delete" method="DELETE">
<button name="clearing" type="submit" class="btn2">Clear</button>
</form>
</div>
<%- include("footer") -%>
将
post
更改为delete
:
app.delete("/delete", (req,res) => {
items = [];
res.redirect("/");
})
试试这个:
app.delete("/delete", (req,res) => {
let clearing = req.body.clear;
if(clearing){
items.splice(0,items.length)
res.redirect("/");
}
})
有关更多参考信息,您可以在此处查看其他方法:将您的表单操作置于“发布”位置,以显示删除按钮。Html表单方法只接受两个值GET或POST。如果要使用DELETE动词,就必须使用ajax 对于您的情况,如果您将form方法更改为POST,应该可以
<form action="/delete" method="POST">
<button name="clearing" type="submit" class="btn2">Clear</button>
清楚的
app.get(“/delete”,(请求、回复)=>{
res.redirect(“/”);
})
app.post(“/delete)”,(请求、回复)=>{
项目.拼接(0,项目.长度)
res.redirect(“/”);
})
清楚的
多亏了你几次尝试后的帮助,它才起作用。谢谢大家。Change List.ejs表单提交至:
<form action="#!" onsubmit="handleClick()">
<button name="clearing" type="submit" class="btn2">Clear</button>
</form>
最后,在App.js中删除App.post('/delete')和App.get('/delete'),改为写入:
app.delete('/delete', (req, res)=>{
items = [];
res.send({
status: 200,
message: 'Successfully Deleted/Cleared'});
});
你能描述一下问题的详细信息吗?
array.length=0
就行了如果你看我的代码,我想做的就是当我按下“清除任务”按钮时。你没有通过请求正文吗?你能试着注释掉if
条件并再试一次吗?请参考我的编辑,如果有效,请检查如何从模板中传递请求正文。我尝试了,但没有成功,可能是.ejs中的某个内容或表单的位置?更改为post,但路由正在加载app.get(“/delete)”,(req,res)=>{res redirect(/”);})app.delete(“/delete”,(req,res)=>{let clearing=req.body.clear;if(clearing){items.splice(0,items.length)res.redirect(“/”;}})
<form action="#!" onsubmit="handleClick()">
<button name="clearing" type="submit" class="btn2">Clear</button>
</form>
function handleClick(){
fetch('/delete',{
method: 'delete'
}).then(res => {
if (res.ok) return res.json()
}).then(data => {
console.log(data.message);
window.location.reload();
})
})
app.delete('/delete', (req, res)=>{
items = [];
res.send({
status: 200,
message: 'Successfully Deleted/Cleared'});
});