2017-02-21 108 views
-2

该函数使用iCal分析器,该分析器从.ics文件返回未来事件。 eventsParser变量包含所有这些事件。然后我必须将它们推入事件数组中才能显示。但是当我运行它时,我得到这个错误。我试图找出我有限的js知识,但没有运气。我也在StacOverflow上检查了几个相同的问题,但没有任何帮助。(JavaScript).push不是函数

function LoadEvents() { 
      var events = []; 
      var eventsParser = []; 
      var ical_file = 'js/sample.ics'; 

      new ical_parser(ical_file, function(cal){ 
       //When ical parser has loaded file 
       //get future events 
       eventsParser = cal.getFutureEvents(); 
       //console.log(events); 
       eventsParser.forEach(function(events){ 
        events.push({ 
         title: event.SUMMARY, 
         startTime: event.start_time, 
         endTime: event.end_time, 
         allDay: false 
        }); 
       }); 
      }); 
      console.log(events); 
      return events; 
     } 
    }); 
+0

你的foreach回调重新声明一个变量的事件。 – ste2425

+0

你已经为你的内部函数'events'命名了参数(看起来像是一个错字投票) - 它使用的是这个变量,而不是你的外部作用域'events = []'变量。 –

回答

2

我认为在以下行中有一个小的错字:eventsParser.forEach(function(event){}。您不能使用两个相同的命名参数。函数尝试将元素推入参数中,而不是放入events数组中。

尝试下面的代码:

function LoadEvents() { 
 
    var events = []; 
 
    var eventsParser = []; 
 
    var ical_file = 'js/sample.ics'; 
 

 
    new ical_parser(ical_file, function(cal) { 
 
    //When ical parser has loaded file 
 
    //get future events 
 
    eventsParser = cal.getFutureEvents(); 
 
    //console.log(events); 
 
    eventsParser.forEach(function(event) { 
 
     events.push({ 
 
     title: event.SUMMARY, 
 
     startTime: event.start_time, 
 
     endTime: event.end_time, 
 
     allDay: false 
 
     }); 
 
    }); 
 
    }); 
 
    console.log(events); 
 
    return events; 
 
}

+1

您有一个语法错误 –

+1

@Ryad它已修复。 –

+1

如此真实。感谢@Kinduser。我不知道如何,但我总是坚持这些愚蠢的错误。 – Bobys