【发布时间】:2021-06-21 03:21:17
【问题描述】:
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;
})
);
我的疑问:
正如您在上面的代码中看到的,我想显示两个披萨项目的详细信息,其详细信息存储在 json 文件中,并且我正在使用 vanilla javascript 将数据从 json 加载到 HTML。对于每个比萨饼,我都在 index.html 中创建了不好的元素。假设将来我想显示 50 个比萨饼的详细信息,这意味着在 html 中创建 50 个代码块。
有人可以告诉我如何只使用一段 HTML 代码并多次使用它来使用 vanilla javascript 创建尽可能多的披萨项目。
我的看法:
我正在考虑将 json 数据存储为全局变量,然后使用 onload() 和 ready() 加载数据,但我不知道该怎么做。
【问题讨论】:
-
执行一次请求,遍历作为响应的数组,显示信息。寻找developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
stackoverflow.com/questions/53967165/… 这应该会有所帮助。另外,请注意,您可以通过 JSON.parse()-API 轻松地将 JSON 解析为普通的 JS 对象。 (developer.mozilla.org/de/docs/Web/JavaScript/Reference/…)
标签: javascript html json frontend