HTML和JavaScript实现商品购物系统

下面是一个更全面的商品购物系统示例,包含新增商品、商品的增加删除以及结算找零的功能。这个系统使用HTML和JavaScript实现。

1.功能说明:

这个应用程序使用纯HTML和JavaScript实现。

  • 包含一个商品列表和一个购物车区域。
  • 商品列表中有几个示例商品,每个商品都有一个“加入购物车”按钮。
  • 点击“加入购物车”按钮后,商品会被添加到购物车中,并更新购物车显示。
  • 购物车中列出了所有已添加的商品,并计算总价。
  • 每个购物车项都有一个“移除”按钮,可以移除该商品。
  • 结算部分包含一个支付金额输入框和一个结算按钮。
  • 输入支付金额后点击结算按钮,会计算找零并弹出提示框显示结算信息,然后清空购物车。
  • 新增商品部分包含输入框用于输入新的商品名称和价格,以及一个“新增商品”按钮。
  • 点击“新增商品”按钮后,新的商品会被添加到商品列表中。

2.代码展示

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>商品购物系统</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f4f4f9;
            margin: 0;
            padding: 20px;
        }
        .container {
            display: flex;
            justify-content: space-between;
        }
        .product-list, .cart {
            width: 45%;
            background-color: white;
            padding: 20px;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
        h1 {
            text-align: center;
        }
        .product-item, .cart-item {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 10px;
            border-bottom: 1px solid #eee;
        }
        .product-item:last-child, .cart-item:last-child {
            border-bottom: none;
        }
        .product-item button, .cart-item button {
            padding: 5px 10px;
            background-color: #007bff;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }
        .product-item button:hover, .cart-item button:hover {
            background-color: #0056b3;
        }
        .total {
            margin-top: 20px;
            font-size: 18px;
            font-weight: bold;
        }
        .checkout-section {
            margin-top: 20px;
        }
        .checkout-section input[type="number"] {
            width: 100px;
            padding: 5px;
            border: 1px solid #ccc;
            border-radius: 5px;
            margin-right: 10px;
        }
        .checkout-section button {
            padding: 5px 10px;
            background-color: #28a745;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }
        .checkout-section button:hover {
            background-color: #218838;
        }
        .add-product-section {
            margin-top: 20px;
        }
        .add-product-section input[type="text"], .add-product-section input[type="number"] {
            width: 150px;
            padding: 5px;
            border: 1px solid #ccc;
            border-radius: 5px;
            margin-right: 10px;
        }
        .add-product-section button {
            padding: 5px 10px;
            background-color: #ffc107;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }
        .add-product-section button:hover {
            background-color: #e0a800;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="product-list">
            <h1>商品列表</h1>
            <div id="product-items"></div>
            <div class="add-product-section">
                <input type="text" id="new-product-name" placeholder="商品名称" required>
                <input type="number" id="new-product-price" placeholder="价格" min="0" step="any" required>
                <button onclick="addNewProduct()">新增商品</button>
            </div>
        </div>

        <div class="cart">
            <h1>购物车</h1>
            <div id="cart-items"></div>
            <div class="total" id="total-price">总价: ¥0.00</div>
            <div class="checkout-section">
                <input type="number" id="payment" placeholder="支付金额" min="0" step="any" required>
                <button onclick="checkout()">结算</button>
            </div>
        </div>
    </div>

    <script>
        let products = [
            { name: '苹果', price: 5 },
            { name: '香蕉', price: 3 },
            { name: '橙子', price: 4 }
        ];
        let cart = [];

        function updateProductList() {
            const productItemsDiv = document.getElementById('product-items');
            productItemsDiv.innerHTML = '';

            products.forEach((product, index) => {
                const itemDiv = document.createElement('div');
                itemDiv.className = 'product-item';
                itemDiv.innerHTML = `
                    <span>${product.name}</span>
                    <span>¥${product.price.toFixed(2)}</span>
                    <button οnclick="addToCart('${product.name}', ${product.price})">加入购物车</button>
                `;
                productItemsDiv.appendChild(itemDiv);
            });
        }

        function addToCart(name, price) {
            const item = { name, price };
            cart.push(item);
            updateCartDisplay();
        }

        function updateCartDisplay() {
            const cartItemsDiv = document.getElementById('cart-items');
            cartItemsDiv.innerHTML = '';
            let totalPrice = 0;

            cart.forEach((item, index) => {
                const itemDiv = document.createElement('div');
                itemDiv.className = 'cart-item';
                itemDiv.innerHTML = `
                    <span>${item.name}</span>
                    <span>¥${item.price.toFixed(2)}</span>
                    <button οnclick="removeFromCart(${index})">移除</button>
                `;
                cartItemsDiv.appendChild(itemDiv);
                totalPrice += item.price;
            });

            document.getElementById('total-price').textContent = `总价: ¥${totalPrice.toFixed(2)}`;
        }

        function removeFromCart(index) {
            cart.splice(index, 1);
            updateCartDisplay();
        }

        function checkout() {
            if (cart.length === 0) {
                alert('购物车为空,请先添加商品!');
                return;
            }

            const payment = parseFloat(document.getElementById('payment').value);
            const totalPrice = cart.reduce((sum, item) => sum + item.price, 0);

            if (isNaN(payment) || payment < totalPrice) {
                alert('支付金额不足,请重新输入!');
                return;
            }

            const change = payment - totalPrice;
            alert(`结算成功!总价: ¥${totalPrice.toFixed(2)}\n支付金额: ¥${payment.toFixed(2)}\n找零: ¥${change.toFixed(2)}`);
            cart = [];
            updateCartDisplay();
            document.getElementById('payment').value = '';
        }

        function addNewProduct() {
            const newName = document.getElementById('new-product-name').value.trim();
            const newPrice = parseFloat(document.getElementById('new-product-price').value);

            if (!newName || isNaN(newPrice) || newPrice <= 0) {
                alert('请输入有效的商品名称和价格!');
                return;
            }

            products.push({ name: newName, price: newPrice });
            updateProductList();
            document.getElementById('new-product-name').value = '';
            document.getElementById('new-product-price').value = '';
            alert(`商品 "${newName}" 已成功添加`);
        }

        // 初始化商品列表
        updateProductList();
    </script>
</body>
</html>




3.效果展示

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编织幻境的妖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值