Я пытаюсь перебрать массив, созданный каждый раз, когда нажимаю на динамически создаваемый html, и я использую функцию forEach, чтобы перебирать его.Моя проблема заключается в том, что только последний объект отображается в функции forEach в массиве, и ни одно из других значений в массиве не отображается.Вот моя функция, чтобы сделать это -
// //handler to show text from eventData array
document.addEventListener('click', (e)=> {
let noEvents = document.getElementsByClassName('no-Events')[0];
let eventsDescContainer = document.querySelector('.events');
if(e.target.classList.contains('day')){
[...eventData['events']].forEach((event)=>{
if(event['day']===e.target.innerHTML && event['month']===headerMonths.innerHTML && event['year']===headerYears.innerHTML){
//the event['day'], event['month'], and event['year'] values are not looping through the array, they are only showing whatever the last object values I added to the eventData array
//show event Text
showEventText(event['description'], event['month'], event['year'], event['day']);
} else {
console.log(e.target.innerHTML + event['day']);
console.log(headerMonths.innerHTML + event['month'])
console.log(headerYears.innerHTML + event['year']);
console.log(eventData['events']);
clearEventText(headerYears.innerHTML);
noEvents.style.display='initial';
noEvents.innerHTML = `There are no events on ${headerMonths.innerHTML} ${e.target.innerHTML} ${headerYears.innerHTML}`;
//reverse flexDirection to original direction
eventsDescContainer.style.flexDirection = 'column';
}
});
}
});
//JSON event data
let eventData = {
"events": [
{
"description": 'es',
"year": '2018',
"month": 'Nov',
"day": '28'
}
]
};
Он циклически перебирает массив eventData, но если я добавлю другой объект в массив eventData и попробую перебрать его в моем eventListener, eventListener получит толькоэлемент, который я только что добавил в массив, который является последним объектом в массиве, и он не будет перебирать остальную часть массива, чтобы получить более старые объекты.
Значения события ['day'], event ['month'] и event ['year'] не проходят через массив, они показывают только последние значения объекта, которые я добавил в eventDataмассив
Почему это происходит и как я могу это решить?
РЕДАКТИРОВАТЬ:
это функция, которую я использую для добавления новых объектов в массив eventData
//adds json to eventData
function newEventJson(description, month, year, day){
let event = {
"description": description,
"year": year,
"month": month,
"day": day
};
eventData.events.push(event);
}
когда я использую console.log для отладки этого в моем eventListener, eventData ['events'] показывает все значения в массиве, но событие ['day],Событие ['month'] и event ['year'] все имеют те же значения, что и последний элемент в массиве eventData.
Вот ссылка на кодовый блок https://codepen.io/icewizard/pen/ZmJByP.