Skip to content

Instantly share code, notes, and snippets.

@Aminigbo
Last active December 3, 2024 11:28
Show Gist options
  • Save Aminigbo/4c4f14dc56cb9ac13924ce3466ec2558 to your computer and use it in GitHub Desktop.
Save Aminigbo/4c4f14dc56cb9ac13924ce3466ec2558 to your computer and use it in GitHub Desktop.
Let us generate the buttons when we loop through an array of objects
To generate buttons dynamically by looping through an array of objects in JavaScript,
you can use a forEach loop (or other iteration methods) to create the buttons and append
them to the DOM.
Here's how you can do it:
Steps:
Define an array of objects, where each object represents a food item with properties like name.
Loop through the array and dynamically generate buttons based on the array content.
Attach event listeners to each generated button to handle the click events.
Here's an example.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dynamic Buttons</title>
<style>
.food-button {
background-color: black;
color: white;
padding: 10px 20px;
border-radius: 10px;
margin: 10px;
cursor: pointer;
border: none;
font-size: 18px;
}
.active {
background-color: red !important;
}
</style>
</head>
<body>
<div id="food-container"></div>
<script>
// Array of food objects
const foods = [
{ name: "Bean" },
{ name: "Rice" },
{ name: "Yam" },
{ name: "Garri" }
];
// Get the container to append the buttons
const container = document.getElementById('food-container');
// Loop through the food array and create buttons dynamically
foods.forEach(food => {
// Create a button element
let button = document.createElement('button');
button.textContent = food.name;
button.classList.add('food-button');
// Append the button to the container
container.appendChild(button);
// Add click event to handle background color change
button.addEventListener('click', function() {
// Remove 'active' class from all buttons
const allButtons = document.querySelectorAll('.food-button');
allButtons.forEach(btn => btn.classList.remove('active'));
// Add 'active' class to the clicked button
this.classList.add('active');
});
});
</script>
</body>
</html>
Let's explain:
Array of Objects: We define an array called foods, where each object represents a food item with a name property.
const foods = [
{ name: "Bean" },
{ name: "Rice" },
{ name: "Yam" },
{ name: "Garri" }
];
Dynamically Generating Buttons:
We use forEach() to iterate through each object in the foods array.
For each food, a button is created using document.createElement('button'), and its text content is set to the food's name.
The button is styled with the class food-button and appended to the container (#food-container).
Event Handling:
When a button is clicked, we first remove the active class from all other buttons using querySelectorAll() and forEach().
Then we add the active class to the clicked button to change its background color to red.
This method efficiently generates buttons from the array and ensures the clicked button changes color while the others revert to the default black background.
@Aminigbo
Copy link
Author

Screenshot 2024-11-29 at 10 45 55 here's the result

@giddy11
Copy link

giddy11 commented Nov 29, 2024

Great

@giddy11
Copy link

giddy11 commented Nov 29, 2024

image

@ikdimkpa
Copy link

Interesting...

@Adaya123
Copy link

wonderful

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment