我有一个包含在 HTML 中的对象数组。我必须能够单击该对象并显示产品的所有信息(id、标题、书籍、价格、卡路里...)。
执行此操作的最佳方法是什么?
片段:
提前致谢!
"use strict";
document.addEventListener('DOMContentLoaded', loadMeals);
const meals = [
{
id: 1,
title: 'Strawberry Salad with Poppy Seed Dressing',
img: 'Strawberry-Salad-with-Poppy-Seed-Dressing.jpg',
book: 1,
calories: 298,
servings: 3,
type: 'lunch',
price: 15,
cook: 'Jenny Jefferson',
quantity: 10,
},
{
id: 2,
title: 'Cashew Turkey Salad Sandwiches',
img: 'turkey-sandwich.jpg',
book: 2,
calories: 198,
servings: 2,
type: 'lunch',
price: 9,
cook: 'Jenny Jefferson',
quantity: 10
}
];
function loadMeals() {
let i = 0;
let id = 1;
let fillMealList = document.querySelector("#fillMealList");
for (let i = 0; i < meals.length; i++) {
let item = meals.find(item => item.id === id);
fillMealList.innerHTML +=
"<article>"+
"<h3>" + item.title + "</h3>"+
"<figure>"+
"<img src='images/" + item.img + "'" +">" +
"<figcaption>"+
"Meal by: " +"<span>" + item.cook + "</span>" +
"</figcaption>" +
"</figure>"+
"<div class='info'>"+
"<p>€ <span>" + item.price + "</span>" + "/pp" + "</p>" +
"<a href='#' class='addToCart'>Order</a>"+
"</div>"+
"</article>";
id++;
}
}
<div id="mealList">
<div class="flexcontainer" id="fillMealList"></div>
</div>
最佳答案
您可以找到单击的文章的索引,并从具有该索引的数组中获取该项目。
您可以尝试以下方法:
"use strict";
document.addEventListener('DOMContentLoaded', loadMeals);
const meals = [
{
id: 1,
title: 'Strawberry Salad with Poppy Seed Dressing',
img: 'Strawberry-Salad-with-Poppy-Seed-Dressing.jpg',
book: 1,
calories: 298,
servings: 3,
type: 'lunch',
price: 15,
cook: 'Jenny Jefferson',
quantity: 10,
},
{
id: 2,
title: 'Cashew Turkey Salad Sandwiches',
img: 'turkey-sandwich.jpg',
book: 2,
calories: 198,
servings: 2,
type: 'lunch',
price: 9,
cook: 'Jenny Jefferson',
quantity: 10
}
];
function loadMeals() {
let i = 0;
let id = 1;
let fillMealList = document.querySelector("#fillMealList");
for (let i = 0; i < meals.length; i++) {
let item = meals.find(item => item.id === id);
fillMealList.innerHTML +=
"<article class='objectP'>"+
"<h3>" + item.title + "</h3>"+
"<figure>"+
"<img src='images/" + item.img + "'" +">" +
"<figcaption>"+
"Meal by: " +"<span>" + item.cook + "</span>" +
"</figcaption>" +
"</figure>"+
"<div class='info'>"+
"<p>€ <span>" + item.price + "</span>" + "/pp" + "</p>" +
"<a href='#' class='addToCart'>Order</a>"+
"</div>"+
"</article>";
id++;
}
}
document.addEventListener('DOMContentLoaded', function(){
document.querySelectorAll('.objectP').forEach(function(el){
el.addEventListener('click', function(){
var nodes = Array.prototype.slice.call( document.getElementById('fillMealList').children );
var idx = nodes.indexOf(this);
console.clear(); // clears the console
console.log(meals[idx])
});
})
});
<div id="mealList">
<div class="flexcontainer" id="fillMealList"></div>
</div>
关于javascript - JS : Clicking on a object from array --> show more info,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53834005/