HTML:
<% for (let i = 0; i < monthlyTopSellers.imageUrlList.length; i++){ %>
<button id="test<%= i+1 %>">Buy Now</button>
<% } %>
<script>
for (let i = 0; i < 10; i++){
$('#test'+i.toString()).click(function () {
let item = <%= items[i] %>
// Then I just will use item variable
}
}
</script>
给我一个错误,说未定义'i',在此代码中'let item = <%= items [i]%>'。有什么解决方法或其他方法可以解决这个问题。
答案 0 :(得分:1)
Ejs不会运行循环for (let i = 0; i < 10; i++)
(客户端),它只会在您的<% %>
内部以循环运行
您可以在itemsClient
之前用items
创建for (let i = 0; i < 10; i++)
并在该循环中使用itemsClient
。
<% for (let i = 0; i < monthlyTopSellers.imageUrlList.length; i++){ %>
<button id="test<%= i+1 %>">Buy Now</button>
<% } %>
<script>
let itemsClient = <%- JSON.stringify(items) %>;
for (let i = 0; i < 10; i++){
$('#test'+i.toString()).click(function () {
let item = itemsClient[i];
// Use item (itemsClient[i])
}
}
</script>
您可以对其进行测试。
答案 1 :(得分:-1)
首先,您应该将i count数组作为json对象从node.js传递给ejs。 然后,您在ejs中获得该变量。 而且您可以将此foreach语句用于ejs。
<% monthlyTopSellers.imageUrlList.forEach(function(imgurl, index){ %>
<button id="test<%=index %>">Buy Now</button>
<% }); %>