HTML, CSS with Flexbox and Grid, and JavaScript.

Solution retrospective
I am proud to have completed the project, implemented the interaction with JavaScript, and used JSON. Since it was my first time using JSON, I enjoyed working with the tool and was glad to complete the project using it.
What I would do differently is write the code in a more simplified way. I believe my code turned out too lengthy.
What challenges did you encounter, and how did you overcome them?The interaction with JSON, since it was my first time using fetch, was a bit more challenging. But after studying a bit and doing some tests, I was able to use it easily, and the project went very well.
What specific areas of your project would you like help with?I would like help both with the code itself — how I can simplify it — and, especially, whether I could have done something differently with JavaScript, or if there’s a way I could have made it simpler.
Please log in to post a comment
Log in with GitHubCommunity feedback
- P@mirkozlatunic
great job to have the styling so it looks good to me. what I suggest to change is the following:
- Try not to repeat the code for each button click
- Set on of the button to default
Here is an example that I did:
// Fetch data from the JSON file fetch('./data.json') .then((response) => response.json()) .then((data) => { // Render cards with the default timeframe (e.g., "weekly") renderCards(data, 'weekly'); // Set "Weekly" as the default active button on page load const weeklyButton = Array.from(buttonEl).find( (button) => button.textContent.trim().toLowerCase() === 'weekly' ); if (weeklyButton) { weeklyButton.classList.add('active'); } // Add event listeners to buttons for dynamic updates buttonEl.forEach((button) => { button.addEventListener('click', () => { const timeframe = button.textContent.trim().toLowerCase(); // Get the timeframe (daily, weekly, monthly) // Remove the active class from all buttons buttonEl.forEach((btn) => btn.classList.remove('active')); // Add the active class to the clicked button button.classList.add('active'); // Re-render cards with the selected timeframe renderCards(data, timeframe); }); }); }) .catch((error) => console.error('Error fetching data:', error));
Marked as helpful
Join our Discord community
Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!
Join our Discord