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>
`
相关文章
|
6天前
|
Web App开发
在 HTML 中禁用 Chrome 浏览器的 Google 翻译功能
在 html 标签中添加 translate=“no” 属性,浏览器将不会翻译整个页面。
48 0
|
6天前
|
Java 测试技术 数据库
基于SpringBoot+HTML实现登录注册功能模块
基于SpringBoot+HTML实现登录注册功能模块
|
6天前
|
前端开发 文件存储 Python
python之xhtml2pdf: HTML转PDF工具示例详解
python之xhtml2pdf: HTML转PDF工具示例详解
13 0
|
6天前
|
数据采集 数据挖掘 Python
Python之html2text: 将HTML转换为Markdown 文档示例详解
Python之html2text: 将HTML转换为Markdown 文档示例详解
11 0
|
6天前
|
前端开发
HTML代码示例
HTML代码示例
22 1
|
6天前
|
JavaScript 前端开发
多功能成语查询工具HTML源码
采用本地HTML,JavaScript,js代码编写,自适应端,源码全部开源可二开优化! 功能包含;成语接龙查询、以某个字开头的成语查询、包含某字的成语查询、 第二个字是某字的成语查询上传源码解压缩即可访问,支持上传二级目录访问, 或者是浏览器直接打开html本地访问
24 0
|
6天前
|
JSON 前端开发 JavaScript
从假数据到动态表格:一个简单的JavaScript和HTML示例
从假数据到动态表格:一个简单的JavaScript和HTML示例
|
6天前
|
移动开发 HTML5 容器
HTML5响应式网页设计——核心技能考核示例(用于2022年11月H5考核)
HTML5响应式网页设计——核心技能考核示例(用于2022年11月H5考核)
29 0
|
6天前
html+css+js完成代码弹出功能
html+css+js完成代码弹出功能
28 0
|
6天前
|
数据采集 数据安全/隐私保护
HTML表单标签和表单项标签示例
HTML表单标签和表单项标签示例
34 1