index.html
<!--FIRST PIZZA---FIRST CHUNK OF HTML CODE-->
<div class="column-pizza-1">
<a href="">
<div class="pizza-item--img">
<img src="" id="pizza-img-1" />
</div>
<div class="pizza-item--add" id="selected-1">Add</div>
</a>
<div class="pizza-item--price" id="pizza-price-1">Rs. --</div>
<div class="pizza-item--name" id="pizza-name-1">--</div>
<div class="pizza-item--desc" id="pizza-desc-1">--</div>
</div>
<!--SECOND PIZZA---SECOND CHUNK OF HTML CODE-->
<div class="column-pizza-2">
<a href="">
<div class="pizza-item--img">
<img src="" id="pizza-img-2" />
</div>
<div class="pizza-item--add" id="selected-2">Add</div>
</a>
<div class="pizza-item--price" id="pizza-price-2">Rs. --</div>
<div class="pizza-item--name" id="pizza-name-2">--</div>
<div class="pizza-item--desc" id="pizza-desc-2">--</div>
<div class="pizza-item--sizes" id="pizza-size-2">
</div>
pizzas.json
[
{
"id": 1,
"name": "Tandoori Paneer",
"img": "/images/pizza.png",
"price": 200,
"sizes": [0, 100, 200],
"description": "Spiced paneer, Onion, Green Capsicum & Red Paprika in Tandoori Sauce",
"cheese": [0, 100, 0]
},
{
"id": 2,
"name": "Veggie Supreme",
"img": "images/pizza.png",
"price": 250,
"sizes": [0, 100, 200],
"description": "Black Olives, Green Capsicum, Mushroom, Onion, Red Paprika, Sweet Corn",
"cheese": [0, 100, 0]
}
]
index.js
//FIRST PIZZA - loading json data and showing it on index.html page
fetch("pizzas.json").then((response) =>
response.json().then((data) => {
//console.log(data[0].name);
document.querySelector("#pizza-img-1").src = data[0].img;
document.querySelector("#pizza-name-1").innerHTML = data[0].name;
document.querySelector(
"#pizza-price-1"
).innerHTML = `Rs ${data[0].price.toFixed(2)}`;
document.querySelector("#pizza-desc-1").innerHTML = data[0].description;
})
);
//SECOND PIZZA
fetch("pizzas.json").then((response) =>
response.json().then((data) => {
//console.log(data[0].name);
document.querySelector("#pizza-img-2").src = data[1].img;
document.querySelector("#pizza-name-2").innerHTML = data[1].name;
document.querySelector(
"#pizza-price-2"
).innerHTML = `Rs ${data[1].price.toFixed(2)}`;
document.querySelector("#pizza-desc-2").innerHTML = data[1].description;
})
);
MY DOUBT:
As you can see in the above code, I want to display details of two pizza items whose details are stored in json file and I'm using vanilla javascript to load data from json to HTML. And for each each of the pizzas, I have created element in index.html which is not good. Let's suppose in future I want to display details of 50 pizzas, so that would mean creating 50 chunks of code in html.
Can someone please tell me how can I use only one chunk of the HTML code and use it multiple times to create as many pizza items using vanilla javascript.
MY TAKE ON:
I was thinking to store the json data as a global variable and then use onload() and ready() to load data but I'm not sure about how to do it.