You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在线商店购物车功能异常:点击加入购物车后数据未正确统计

问题排查与修复

问题现象

开发简易在线商店,期望点击「ADD TO BASKET」按钮后获取商品名称、价格、尺寸并加入购物车;点击「Go to Basket」按钮展示购物车区域,显示选中商品信息并计算总价。但实际操作后购物车为空,总价显示为0.00。

错误原因与修复点

  • 价格获取逻辑错误:
    JS中document.getElementById(priceElementId)[0].value写法错误,<p>标签不是表单集合元素,没有[0]属性;且<p>的value属于自定义属性,需用getAttribute("value")获取。另外价格用逗号作为小数分隔符,parseFloat无法识别,需替换为小数点。
  • 参数传递错误:
    第二个商品的「ADD TO BASKET」按钮中,价格元素ID传成了cena2,但对应HTML里的<p>标签ID是price2,导致无法获取价格。
  • 购物车展示文本错误:
    updateCartDisplay函数里重复写了「Size:」,应改为「Price:」,否则商品信息显示混乱。

修正后的代码

HTML代码

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="utf-8"/>
    <link rel="stylesheet" type="text/css" href="styles.css">
    <title>Goodclothes</title>
    <link rel="icon" type="image/x-icon" href="bluza_ikona.png">
    <script defer src="script.js"></script>
</head>
<body>
    <form style="border: 1px solid; background-color: #F5F2E9;" class="container">
        <h1 style="text-align: center;"><i>Goodclothes</i></h1>
        <fieldset>
            <legend class="maint">OUR PRODUCTS</legend>
            <div name="Green hoodie">
                <a onMouseOver='change1.src="green2.jpg"' onMouseOut='change1.src="green1.jpg"'>
                    <img src="green1.jpg" id="change1" alt="Green hoodie" border="0" width= "212" height= "318">
                </a>
                <h4>Green hoodie</h4>
                <p id="price1" value="119,99">Price: 119,99 PLN</p><br>
                <p>Choose size:</p>
                <select id="size1">
                    <option value="xs">XS</option>
                    <option value="s">S</option>
                    <option value="m">M</option>
                    <option value="l">L</option>
                    <option value="xl">XL</option>
                    <option value="xxl">XXL</option>
                </select>
                <br><br>
                <button type="button" class="addToCart" onclick="addToCart('Green hoodie', 'price1', 'size1')">ADD TO BASKET </button>
            </div>
        </fieldset>
        
        <fieldset>
            <div>
                <a onMouseOver='change2.src="ablack2.jpg"' onMouseOut='change2.src="ablack1.jpg"'>
                    <img src="ablack1.jpg" id="change2" alt="Black hoodie Asian Style" border="0" width="212" height="318">
                </a>
                <h4>Black hoodie asian style</h4>
                <p id="price2" value="139,99">Price: 139,99 PLN</p>
                <p>Choose size:</p>
                <select id="size2">
                    <option value="xs">XS</option>
                    <option value="s">S</option>
                    <option value="m">M</option>
                    <option value="l">L</option>
                    <option value="xl">XL</option>
                    <option value="xxl">XXL</option>
                </select>
                <br><br>
                <button type="button" class="addToCart" onclick="addToCart('Black hoodie asian style', 'price2', 'size2')">ADD TO BASKET</button>
            </div>
        </fieldset> <br>
    </form>
    
    <div align="center">
        <button type="button" class="addToCart" id="bucket" onclick="openBucket()">Go to basket</button>
    </div>
    
    <div id="cart" style="display: none;">
        <h2>BASKET</h2>
        <div id="cartItems"></div>
        <p id="totalPrice"></p>
    </div>
</body>
</html>

JavaScript代码

var cart = [];

function addToCart(name, priceElementId, sizeElementId) {
    var priceElement = document.getElementById(priceElementId);
    // 获取自定义value属性并替换逗号为小数点
    var priceStr = priceElement.getAttribute("value").replace(",", ".");
    var price = parseFloat(priceStr);
    var size = document.getElementById(sizeElementId).value;
    
    console.log("Adding to basket:", name, price, size);
    
    var product = {
        name: name,
        size: size,
        price: price,
    };
    
    cart.push(product);
    
    console.log("Basket after adding:", cart);
    
    updateCartDisplay();
}

function updateCartDisplay() {
    var cartItemsDiv = document.getElementById("cartItems");
    var totalPriceParagraph = document.getElementById("totalPrice");
    
    cartItemsDiv.innerHTML = '';
    
    var totalPrice = cart.reduce(function (sum, product) {
        return sum + product.price;
    }, 0);

    cart.forEach(function (product) {
        var productInfo = document.createElement("p");
        // 修正重复的Size文本为Price
        productInfo.textContent = product.name + " - Size: " + product.size + " - Price: " + product.price.toFixed(2) + " PLN";
        cartItemsDiv.appendChild(productInfo);
    });
    totalPriceParagraph.textContent = "Total price: " + totalPrice.toFixed(2) + " PLN";
}

function openBucket() {
    var cartDiv = document.getElementById("cart");
    cartDiv.style.display = "block";
    
    updateCartDisplay();
}

内容的提问来源于stack exchange,提问作者Pythonman21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 03:59:53