[英]why doesnt my button work on addEventListener alongside Ejs and Express?
我试图制作一个 Twitter 形状的地方,在那里我可以发布推文(帖子)并且帖子显示在同一页面上。 此外,每个帖子都有一个默认为 display:none 的 Edit。 当我按下“编辑”按钮时,我需要将该显示更改为“阻止”,以便使其可见并使用该空间编辑我的评论。 但是我的按钮不起作用。 我想测试我的按钮,所以我为其事件添加了一个 console.log,但它不起作用? 为什么?
如果您能帮助我解决我的问题并提出实现我最终目标的方法(发表评论并在同一个地方进行编辑),那就太好了。 index.js(第一个代码)/ home.ejs(第二个代码)
const express = require('express');
const app = express();
const path = require('path');`enter code here`
const methodOverride = require('method-override');
let allPosts = [];
app.use(express.urlencoded({extended :true }));
app.set('view engine','ejs');
app.use(methodOverride('_method'));
app.get('/',(req,res) => {
res.render('home.ejs')
})
app.post('/post/new',(req,res) => {
const {username,post} = req.body;
allPosts.push({username,post});
res.render('home.ejs',{allPosts});
})
app.listen(3000,() => {
console.log('Server is listening on port 3000!')
})
<!-- language: lang-html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>homepage</title>
</head>
<body>
<h1>Welcome to the Wall!</h1>
<p>tell me whats on your mind today!</p>
<form action="/post/new" method="POST">
<input type="text" name='username' placeholder="username">
<textarea name='post' placeholder="how do you feel today?"></textarea>
<button>Submit</button>
</form>
<% for (p in locals.allPosts) { %>
<% let post = locals.allPosts %>
<p>
<b><%= post[p].username %></b> : <%= post[p].post %>
<button class="edit">Edit</button><button>Delete</button>
</p>
<textarea id="edit" name="edit" style='display:none'></textarea>
<% } %>
<script>
let edit = document.querySelector('.edit');
edit.addEventListener('click',() => {
console.log('you clicked on edit btn!');})
</script>
</body>
</html>
document.querySelector('#edit')
选择 ID 为edit
的唯一元素。
具有该 ID 的元素是textarea
,而不是button
,它是在循环中生成的,因此它可能不是唯一的。
如果你想 select 一个元素基于它所属的类,使用.
不是#
并且不要在类名本身中放置特殊字符(如#
)。
如果要 select 多个元素,请使用querySelectorAll
并循环它给出的多个结果。
尝试将按钮属性更改为 id。如下所示。
<button id="edit">Edit</button><button>Delete</button>
然后我是你的脚本
let edit = document.querySelector('#edit');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.