ejs onclick事件在for循环内的链接上激活所有链接onclick事件

时间:2018-11-03 10:53:37

标签: javascript express onclick ejs

在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的经验,所以我可能做错了事。

1 个答案:

答案 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 ,而不是在服务器端。