javascript - JS : Clicking on a object from array --> show more info

标签 javascript html arrays

我有一个包含在 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/

相关文章:

javascript - SVG:Windows 和 Linux 上的字体间距非常不同

javascript - 设置 useMap 后无法更改图像源

javascript - ClojureScript 中的向量到元素?

html - 有没有办法在没有 jQuery 的情况下使文本框自动展开?

css - 文本和图像不会在我的页面上居中

python - 花式索引中的多个条件

javascript - OpenAI 转录 API 返回 400 错误请求

jquery - 使用 jQuery 隐藏响应式菜单项中的子项

javascript - 数组的高效映射

python - bool 索引与 np.where