在ejs forEach循环中,我具有带有链接的元素,例如:
<% someArray.forEach(function(someElement) { %>
<div>
<h5>someElement.title</h5>
<a href="#" onclick="<% doSomeAction(someElement) %>">Some Action</a>
</div>
<% }); %>
当我单击一个元素上的链接时,它将触发列表中所有元素的onclick事件。因此,假设我的Express代码看起来像这样:
let someArray = [
{
title: 'Title 1',
body: 'This is element 1'
},
{
title: 'Title 2',
body: 'This is element 2'
}
];
let doSomeAction = (someElement) => {
console.log(someElement.title);
};
如果我单击title
为“标题1”的元素,则将在控制台中记录以下内容:
Title 1
Title 2
任何人都可以解释这种行为,我应该纠正什么或做这件事的更好方法是什么。我正在将Express与ejs一起使用,我以前没有ejs的经验,所以我可能做错了事。
答案 0 :(得分:0)
我没有足够的声誉来发表评论,但是如果您解决了该问题,则可以回答自己的问题。
如果未解决该问题,您是否在浏览器中检查了html输出?onclick属性必须为空,并且在ejs标记开头没有'='符号,并且尝试在元素上附加事件的方式是错误的。
控制台日志必须归因于代码的其他部分。
也就是说,工作代码就是这样,
<% someArray.forEach(function(someElement) { %>
<div>
<h5>someElement.title</h5>
<a href="#" onclick="doSomeAction('<%=someElement.email%>')">Some Action</a>
</div>
<% }); %>
然后您在FRONT END javascript代码中定义 doSomeAction ,而不是在服务器端。