【问题标题】:Embedded JavaScript for-loop explanation嵌入式 JavaScript for-loop 解释
【发布时间】:2015-07-21 16:35:06
【问题描述】:

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

【问题讨论】:

  • 您的索引超出范围... for (var i = 0; i

标签: javascript node.js ejs


【解决方案1】:

您在定义 for 循环时遇到语法错误:您忘记定义迭代的上限。在您的情况下,索引超出范围。

<% for (var i = 0; i < services.length; i++) { %>
   <tr>
      <td><%= services[i].name %></td>
      <td class="alignright"><%= services[i].price %></td>
   </tr>
<% } %>

【讨论】:

    猜你喜欢
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 2022-12-01
    • 2019-05-21
    • 2022-12-09
    • 2017-07-17
    相关资源
    最近更新 更多