制作购物车时发出

问题描述 投票:0回答:1

所以我正在编写购物车项目,但遇到了问题。

我想在 cart.html 中显示存储在本地存储中的数据的详细信息。运行代码时,程序无法找到 .name 或 data.js 中的任何内容,并返回未定义或异步图像,而不是实际图像或名称

如果没有搜索功能,在控制台中我可以看到购物车中的物品及其所有详细信息例如:id、名称、desc 等等...

我希望程序以这样的方式运行:“如果”购物车有数据,则显示内容,“否则”说购物车是空的,并且按钮显示“返回主页”。

if 和 else 函数都运行良好,唯一的问题是显示内容

如果您能提供更正和正确的指导,我将不胜感激,提前致谢!

cart.html 的一部分

<div id="label" class="text-center"></div>


      <div id="shopping-cart" class="shopping-cart"></div>


    </body>
    <script src="src/data.js"></script>
    <script src="src/cart.js"></script>
</html>

cart.js

let label = document.getElementById('label');
let shoppingCart = document.getElementById('shopping-cart');


let basket = JSON.parse(localStorage.getItem("data")) || [];


let calculation = () => {
    let cartIcon = document.getElementById("cartAmount");
    cartIcon.innerHTML = basket.map((x) => x.item).reduce((x, y) => x + y, 0);
};

calculation();


let generateCartItems = () => {

    if (basket.length !== 0) {
        return (shoppingCart.innerHTML = basket
            .map((x) => {
                console.log(x);
                let {
                    id,
                    item
                } = x;
                let search = shopItemsData.find((y) => y.id === id) || {};
                return 
            <div class="cart-item">
                <h2>${itemName} has been added</h2>
            </div>
            ;
            })
            .join(''));
    } else {
        shoppingCart.innerHTML = ;
        label.innerHTML = 
        <h2>Cart is EMPTY!</h2><br>
        <a href="index.html">
        <button type="button" class="btn btn-danger">Back to Home!</button>
        </a>
        ;
    }
};

generateCartItems();

数据.js

let shopItemsData = [
    {
        id: "1",
        name: "Silver Wash",
        price: 499,
        desc: "This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.",
        img: "images/silver.jpg"
    },
    {
        id: "2",
        name: "Gold Wash",
        price: 999,
        desc: "This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.",
        img: "images/gold1.jpg"
    }];

现在在index.html中,我已经用值对卡片进行了编程,并为.js文件制作了单独的data.js,index.html的示例如下所示:

<div class="shop" id="shop">

        <div id=product-id-1 class="card mb-3">
          <div class="row g-0">
            <div class="col-md-4">
              <img src="images/silver.jpg" class="img-fluid rounded-start" alt="...">
            </div>
            <div class="col-md-8">
              <div class="card-body">
                <h5 class="card-title">Silver Wash</h5>
                <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content.
                  This content is a little bit longer.
                </p>
                <br>
                <button type="button" onclick="add(1)" class="btn btn-primary">@499 | Add to cart</button>
              </div>
            </div>
          </div>
        </div>
</div>
javascript html shopping-cart
1个回答
0
投票

如果你不使用任何库,这部分

                return 
            <div class="cart-item">
                <h2>${itemName} has been added</h2>
            </div>
            ;

必须抛出错误

Uncaught SyntaxError: Unexpected token '<'
你应该像这样用反引号括起来

return `<div class="cart-item">
<h2>${itemName} has been added</h2>
</div>`
© www.soinside.com 2019 - 2024. All rights reserved.