我正在尝试在EJS中使用for循环来渲染我的表,但是我一直收到这个错误,说它无法找到我的变量:
TypeError: /Users/martin/Documents/Atom-files/Nye_eksempler/testApp/public/views/billing.html:41
39| <% for (var i = 0; services.length; i++) { %>
40| <tr>
>> 41| <td><%= services[i].name %></td>
42| <td class="alignright"><%= services[i].price %></td>
43| </tr>
44| <% } %>
Cannot read property 'name' of undefined
有问题的代码是:
<% for (var i = 0; services.length; i++) { %>
<tr>
<td><%= services[i].name %></td>
<td class="alignright"><%= services[i].price %></td>
</tr>
<% } %>
以及呈现视图的方式是:
app.get('/', function(req, res) {
res.render('billing.html', {
total_payment: '$43',
name: 'martin scorsese',
date: '25. may',
billing_id: '#213123',
services: [{name: 'flight', price: '$22'}, {name: 'car', price: '$21'}]
} );
});
为什么这会给我一个错误?我的其他变量加载没有问题,它只是for循环和“服务”变量导致麻烦。
答案 0 :(得分:0)
定义for循环时出现语法错误:您忘记定义迭代的上限。在您的情况下,索引超出范围。
<% for (var i = 0; i < services.length; i++) { %>
<tr>
<td><%= services[i].name %></td>
<td class="alignright"><%= services[i].price %></td>
</tr>
<% } %>