HTML购物车示例(勾选、删除、添加和结算功能)

简介: HTML购物车示例(勾选、删除、添加和结算功能)

以下是一个简单的HTML购物车示例,包含勾选、删除、添加和结算功能。结算功能使用PHP实现,可以获取选中商品的ID。

以下是一个简单的HTML购物车示例,包含勾选、删除、添加和结算功能。结算功能使用PHP实现,可以获取选中商品的ID`以下是一个简单的HTML购物车示例,包含勾选、删除、添加和结算功能。结算功能使用PHP实现,可以获取选中商品的ID。

<!DOCTYPE html>
<html>
<head>
      <link rel="stylesheet" href="css/style.css" />
  <title>购物车</title>
  <style>
    table {
      border-collapse: collapse;
      width: 100%;
    }
    th, td {
      text-align: left;
      padding: 8px;
      border-bottom: 1px solid #ddd;
    }
    tr:hover {
      background-color: #f5f5f5;
    }
    .check {
      width: 20px;
    }
    .delete {
      color: red;
      cursor: pointer;
    }
    .total {
      font-weight: bold;
      text-align: right;
    }
    #checkout {
      margin-top: 20px;
      text-align: right;
    }
  </style>
</head>
<body>
  <h1>购物车</h1>
  <table>
    <thead>
      <tr>
        <th class="check"></th>
        <th>商品名称</th>
        <th>价格</th>
        <th>数量</th>
        <th>小计</th>
        <th class="delete"></th>
      </tr>
    </thead>
    <tbody>
      <tr class="item-row" data-id="1">
        <td class="check"><input type="checkbox" name="item[]" value="1"></td>
        <td>商品1</td>
        <td>10.00</td>
        <td><input type="number" name="quantity[]" value="1"></td>
        <td class="subtotal">10.00</td>
        <td class="delete">X</td>
      </tr>
      <tr class="item-row" data-id="2">
        <td class="check"><input type="checkbox" name="item[]" value="2"></td>
        <td>商品2</td>
        <td>20.00</td>
        <td><input type="number" name="quantity[]" value="1"></td>
        <td class="subtotal">20.00</td>
        <td class="delete">X</td>
      </tr>
      <tr class="item-row" data-id="3">
        <td class="check"><input type="checkbox" name="item[]" value="3"></td>
        <td>商品3</td>
        <td>30.00</td>
        <td><input type="number" name="quantity[]" value="1"></td>
        <td class="subtotal">30.00</td>
        <td class="delete">X</td>
      </tr>
    </tbody>
    <tfoot>
      <tr>
        <td colspan="4" class="total">总计:</td>
        <td class="total" id="total">0.00</td>
        <td></td>
      </tr>
    </tfoot>
  </table>
  <div id="checkout">
    <button onclick="checkout()">结算</button>
  </div>
  <script>
    // 计算小计和总计
    function updateSubtotal() {
      var rows = document.querySelectorAll('.item-row');
      var total = 0;
      for (var i = 0; i < rows.length; i++) {
        var row = rows[i];
        var price = parseFloat(row.querySelector('td:nth-child(3)').textContent);
        var quantity = parseInt(row.querySelector('input[name="quantity[]"]').value);
        var subtotal = price * quantity;
        row.querySelector('.subtotal').textContent = subtotal.toFixed(2);
        total += subtotal;
      }
      document.querySelector('#total').textContent = total.toFixed(2);
    }
    // 删除商品
    function deleteItem() {
      var row = this.parentNode;
      row.parentNode.removeChild(row);
      updateSubtotal();
    }
    // 添加商品
    function addItem() {
      var table = document.querySelector('table');
      var row = table.insertRow(-1);
      row.classList.add('item-row');
      row.dataset.id = Date.now(); // 生成一个随机ID
      row.innerHTML = `
        <td class="check"><input type="checkbox" name="item[]" value="${row.dataset.id}"></td>
        <td><input type="text" name="name[]"></td>
        <td><input type="number" name="price[]" step="0.01"></td>
        <td><input type="number" name="quantity[]" value="1"></td>
        <td class="subtotal">0.00</td>
        <td class="delete">X</td>
      `;
      row.querySelector('.delete').addEventListener('click', deleteItem);
      row.querySelector('input[name="quantity[]"]').addEventListener('input', updateSubtotal);
      row.querySelector('input[name="price[]"]').addEventListener('input', updateSubtotal);
    }
    // 结算选中的商品
    function checkout() {
      var items = document.querySelectorAll('input[name="item[]"]:checked');
      var ids = [];
      for (var i = 0; i < items.length; i++) {
        ids.push(items[i].value);
      }
      if (ids.length > 0) {
        window.location.href = 'checkout.php?ids=' + ids.join(',');
      } else {
        alert('请选择要结算的商品');
      }
    }
    // 绑定事件
    var deleteButtons = document.querySelectorAll('.delete');
    for (var i = 0; i < deleteButtons.length; i++) {
      deleteButtons[i].addEventListener('click', deleteItem);
    }
    var addBtn = document.querySelector('#add');
    addBtn.addEventListener('click', addItem);
    var quantityInputs = document.querySelectorAll('input[name="quantity[]"]');
    for (var i = 0; i < quantityInputs.length; i++) {
      quantityInputs[i].addEventListener('input', updateSubtotal);
    }
    var priceInputs = document.querySelectorAll('input[name="price[]"]');
    for (var i = 0; i < priceInputs.length; i++) {
      priceInputs[i].addEventListener('input', updateSubtotal);
    }
  </script>
</body>
</html>
`
相关文章
|
2月前
|
Web App开发
在 HTML 中禁用 Chrome 浏览器的 Google 翻译功能
在 html 标签中添加 translate=“no” 属性,浏览器将不会翻译整个页面。
140 0
|
27天前
|
Ubuntu C++ Docker
Docker的基本指令和HTML/PYTHON/C++的简单创建示例
Docker的基本指令和HTML/PYTHON/C++的简单创建示例
|
2天前
|
自然语言处理 开发者 Python
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的 HTML 内容。Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强。
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的 HTML 内容。Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强。
10 2
|
2月前
|
Java 测试技术 数据库
基于SpringBoot+HTML实现登录注册功能模块
基于SpringBoot+HTML实现登录注册功能模块
|
16天前
|
前端开发 JavaScript
HTML 全局属性介绍及示例
HTML 全局属性介绍及示例
13 2
|
17天前
HTML表格的跨行与跨列:《红楼梦》人物与小学课表示例
HTML表格的跨行与跨列:《红楼梦》人物与小学课表示例
10 1
|
7天前
HTML【详解】超链接 a 标签的四大功能(页面跳转、页内滚动【锚点】、页面刷新、文件下载)
HTML【详解】超链接 a 标签的四大功能(页面跳转、页内滚动【锚点】、页面刷新、文件下载)
9 0
|
13天前
|
JavaScript 前端开发 UED
【源码分享】简单的404 HTML页面示例,该页面在加载时会等待2秒钟,然后自动重定向到首页
【源码分享】简单的404 HTML页面示例,该页面在加载时会等待2秒钟,然后自动重定向到首页
22 0
|
17天前
|
前端开发 JavaScript 容器
技术经验解读:个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)
技术经验解读:个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)
20 0
|
2月前
|
存储 JavaScript 前端开发
笔.COOL,一个功能完备、使用便捷的在线HTML/CSS/JS以及Vue编辑器和作品分享平台
笔.COOL是一个新兴的在线 HTML/CSS/JS 及 Vue 编辑器,提供实时预览和云端存储功能。用户可以随时随地编写和保存代码,同时分享作品给他人预览和学习。它也是一个实用的 BUG 复现工具,支持嵌入编辑器到博客,促进代码交流。社区活跃,适合开发者展示作品、获取灵感和学习。