嵌入式JavaScript for循环说明

时间:2015-07-21 08:30:00

标签: javascript node.js ejs

我正在尝试在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循环和“服务”变量导致麻烦。

1 个答案:

答案 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>
<% } %>