如何显示我的数组中的所有对象,而不仅仅是 1 以及如何按顺序显示? [关闭]

Posted

技术标签:

【中文标题】如何显示我的数组中的所有对象,而不仅仅是 1 以及如何按顺序显示? [关闭]【英文标题】:How do I show all objects from my array and not just the 1 and also how do I do it in order? [closed] 【发布时间】:2022-01-07 11:02:54 【问题描述】:

如何显示我的数组中的所有对象,而不仅仅是 1 以及如何按顺序显示?它只显示 1 项,并且只显示最后一项。所以我列出了所有的对象,但它只给了我相同的项目,而且它也是从底部开始的。

let stoves = [
    
        id: 1,
        brand: "Frigidaire",
        modelNumber: "FCRC3012AW",
        description: "30\" Electric Coil Top Range ",
        color: "White",
        price: "$450.00",
        qty: "",
    ,

    
        id: 2,
        brand: "Frigidaire",
        modelNumber: "FFEF3016VB",
        description: "30\" Electric Coil Top Range  - Self Clean",
        color: "Black",
        price: "$465.00",
        qty: "",
    ,

    
        id: 3,
        brand: "Frigidaire",
        modelNumber: "FFEF3016VW",
        description: "30\" Electric Coil Top Range  - Self Clean",
        color: "White",
        price: "$465.00",
        qty: "",
    ,
stoves.forEach((item) => 
   
   brandLogo.src = 'imgs/brand-logos/frig.png';
   productDesc.innerhtml = `$item.description `;
   modelNum.innerHTML = `<h5>Model Number:</h5>$item.modelNumber`;
   price.innerHTML = `$item.price`;
   
   );


applSection();

let appliances = stoves;

function init() 
   appliances.forEach(applSection);


init();

【问题讨论】:

您应该格式化该代码,使其不包含任何拼写错误或语法错误。您还应该使用编辑工具栏中的 sn-p 函数 [&lt;&gt;]brandLogo 等的相关 HTML 添加为 minimal reproducible example。 现在您正在为每次迭代更新 innerHTML。您应该使用 appendChild developer.mozilla.org/en-US/docs/Web/API/Node/appendChild 之类的东西并在每次迭代中添加一个新项目,或者将完整的 html 存储在一个新变量中以在您的 forEach 循环之后打印它 【参考方案1】:

它只显示 1 项,并且只显示最后一项。所以我拥有所有 列出的对象,但它只给我相同的项目,它也 从底部开始。

您的问题是您循环遍历您的数组,但您 assign 而不是每次都累积...所以您绝对会得到最后一项。 所以解决方案是使用一个变量来累积你的objects,然后最后将它分配给HTML

let stoves = [
    
        id: 1,
        brand: "Frigidaire",
        modelNumber: "FCRC3012AW",
        description: "30\" Electric Coil Top Range ",
        color: "White",
        price: "$450.00",
        qty: "",
    ,

    
        id: 2,
        brand: "Frigidaire",
        modelNumber: "FFEF3016VB",
        description: "30\" Electric Coil Top Range  - Self Clean",
        color: "Black",
        price: "$465.00",
        qty: "",
    ]
let productsHTML = "";
stoves.forEach((item) => 
   const product = `<h5>Model Number: $item.modelNumber</h5>Description: $item.description <br/> Price: $item.price <hr/>`;
   productsHTML += product;
   );
productDesc.innerHTML = productsHTML;
&lt;div id="productDesc"/&gt;

【讨论】:

所以您的建议有点用,但我无法在 stackover 流程​​中添加所有内容,是否有其他平台可以向您展示并可能从您那里获得一些额外的帮助? 如果我的答案有效,请将其视为已接受的答案,欢迎您提出另一个问题,不要显示所有内容,只需表明您的想法和您的尝试,绝对是您'会找到我或其他一些开发人员帮助你!快乐编码 ;)【参考方案2】:

innerHTML = 将设置innerHtml,这意味着您将失去使用之前所拥有的内容 += 而是附加到现有的

stoves.forEach((item) => 
   
   brandLogo.src = 'imgs/brand-logos/frig.png';
   productDesc.innerHTML += `$item.description `;
   modelNum.innerHTML += `<h5>Model Number:</h5>$item.modelNumber`;
   price.innerHTML += `$item.price`;
   
   );

【讨论】:

以上是关于如何显示我的数组中的所有对象,而不仅仅是 1 以及如何按顺序显示? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何保存所有绑定的数据,而不仅仅是可见页面的数据

显示所有 Elasticsearch 聚合结果/桶,而不仅仅是 10 个

如何从 Facebook 获取活动页面,而不仅仅是数据

如何将一个对象数组中的所有项目从Javascript动态显示为HTML?

如何从 sqlite 数据库添加到 for 循环

如何更改杰克逊以检测 POJO 中的所有字段,而不仅仅是公共字段?