2017-02-21 2 views
-2

Функция использует парсер iCal, который возвращает будущие события из файла .ics. eventsParser содержит все эти события. Затем я должен нажать их в массиве событий для отображения. Но когда я его запускаю, я получаю эту ошибку. Я пытаюсь разобраться с моим ограниченным js knowladge, но не повезло. Я также проверил пару тем же вопроса здесь, на 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

Ваш Еогеасп обратный вызов повторно объявляя события переменной. – 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

Смежные вопросы