undefined不是ejs中的函数

时间:2014-08-06 11:40:38

标签: javascript arrays node.js ejs

当我想进入js世界时,它是我第一次尝试遇到并学习ejs。

现在我的问题是我遇到了以下错误:

for(i in data.result){ 22| var intime = data.result[i].intime; undefined is not a function

和相关代码如下:

     <table >
          <thead>
            <th>Project Name</th><th>Date</th><th>Login</th><th>Logout</th><th>Time Spend</th>
          </thead> 
          <%
            var fraction = 1000 * 60 * 60;
            for(i in data.result){
                var intime = data.result[i].intime;
                var outtime = data.result[i].outtime;
                var difftime = ((outtime.getTime() - intime.getTime()) / fraction);
                var date = data.result[i].date;
          %>
                <tr>
                  <td>Ninja</td>
                  <td><%=date%></td>
                  <td><%=intime%></td>
                  <td><%=outtime%></td>
                  <td><%=difftime%></td>
                </tr>
          <%
            }
          %>
</table>

我的尝试:

由于异常是说某些内容未定义且我正在尝试调用该函数,因此会引发异常。 因此,为了验证这一点,我省略了整个表格标签并仅添加了以下代码;

 <%= JSON.stringify(data.result[0].outtime)%>   
     <br>
     <%= JSON.stringify(data.result[1])%>   
     <br>
     <%= JSON.stringify(data.result)%>

导致

"14:44:45" 
{"empId":3,"projectId":1,"intime":"09:44:45","outtime":"14:44:45","date":"2014-08-05T18:30:00.000Z"} 
[{"empId":3,"projectId":1,"intime":"09:44:45","outtime":"14:44:45","date":"2014-08-04T18:30:00.000Z"},{"empId":3,"projectId":1,"intime":"09:44:45","outtime":"14:44:45","date":"2014-08-05T18:30:00.000Z"}]  

现在我无法弄清问题是什么以及我在这里犯了什么错误。

由于

1 个答案:

答案 0 :(得分:1)

您正在尝试使用字符串data.result[0].outtime,并且可能是data.result[0].intime),就像它是 Date 对象一样:{ {1}}

((outtime.getTime() - intime.getTime()) / fraction)不是可用于字符串的函数(因此getTime()),因此这就是您看到特定错误的原因。