javascript+css+html购物车案例

这篇具有很好参考价值的文章主要介绍了javascript+css+html购物车案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

javascript代码部分主要实现三部分功能 

1、商品数量增加(减少)同时小计增加(减少)

这部分主要是通过for循环给增加(减少)按钮绑定点击事件

1)点击后计数器自增(自减)

2)计数器数量*对应商品单价 赋值给对应商品小计(涉及到数据类型转换)

parseInt('12ccc') → 12 (该方法常用于截断数值后面的单位)

2、封装一个用于计算总价和总量的函数

1)利用循环函数获取页面所有商品的小计和与数量和

2)将封装函数写进增加(减少)按钮绑定事件里面,使得每次点击都会重新计算小计与数量

注意:该函数要写在for循环外面

3、删除功能 

1)给每个删除事件都要绑定一个点击事件,因此可以与增加减少按钮写在一个循环体内

2)这里主要用到了 父元素.removeChild(子元素)这个方法,这里要分清楚谁是父元素,谁是子元素,一定要找最近的父元素,不要混淆,而且要先获取父元素

3)封装函数也要写在点击事件里面。

这里有个很容易出错的问题:就是删除该列商品后页面中的总价和总商品数量也需要发生对应的改变,因此封装函数需要重新去获取当前页面中的对应商品的数量以及小计,所以我们将获取元素的代码,写在封装函数里面,用于重新获取页面信息。参考局部变量与全局变量的作用域不同,因此不会互相影响。

html实现一个简单的购物车功能,前端js笔记,vscode,html,前端,css,javascript

购物车效果图如下所示: 

html实现一个简单的购物车功能,前端js笔记,vscode,html,前端,css,javascript


 css代码部分文章来源地址https://www.toymoban.com/news/detail-784568.html

* {
    margin: 0;
    padding: 0;
    }
    table {
        border-spacing: 0;
        border: 1px dashed #ccc;
        width: 600px;
        border-left: 0;
        border-right: 0;
        text-align: center;
        /* 让表格居中 */
        margin: 0 auto;
    }
    td {
        border-spacing: 0;
        border: 1px dashed #ccc;
        border-top: 0;
        border-left: 0;
        border-right: 0;
        width: 100px;
        height: 100px;
    }
    th {
        border-spacing: 0;
        border: 1px dashed #ccc;
        border-left: 0;
        border-right: 0;
    }
    
    ul {
     display: flex;
     justify-content: center;
    }

    li {
    display: flex;
     float: left;
     list-style: none;
     justify-content: center;
   }

   .input {
    height: 15px;
    width: 35px;
    text-align: center;
    background-color: whitesmoke;
    border: 1px solid darkred;
    padding: 0;
    margin: 0;
    line-height: 15px;
   }

   .add {
    height: 17px;
    width: 10px;
    text-align: center;
    background-color: darkred;
    text-align: center;
    color: white;
    line-height: 15px;
    padding: 0;
    margin: 0;
    border:1px solid darkred;
   }

   .reduce {
    height: 17px;
    width: 10px;
    text-align: center;
    background-color: darkred;
    text-align: center;
    color: white;
    line-height: 15px;
    padding: 0;
    margin: 0;
    border:1px solid darkred;
   }

   .foot {
    border: 1px solid #ccc;
    border-top: 0;
    width: 600px;
    height:50px;
    margin: 0 auto;
   }

   .jiesuan {
    height:50px;
    background-color: darkred;
    width: 70px;
    color:white;
    border: 0;
    font-size: 15px;
   }

   .bottom {
    font-size: 15px;
    float:right;
   }

   .jiesuan:hover {
    background-color: plum
   }

   #totalNum {
    color: darkred;
   }

   #total_price {
    color: darkred;
   }
    
   .item:hover {
    background-color: whitesmoke;
   }
   
   .item {
    height: 100px;
   }

html代码部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>购物车案例</title>
    <link rel="stylesheet" href="shoppingcar.css">
</head>
<body>
    <table>
        <tr>
         <th><input type="checkbox" class="all">全选</th>
         <th>商品</th>
         <th>单价</th>
         <th>商品数量</th>
         <th>小计</th>
         <th>操作</th>
        </tr>
        <tbody id="carBody">
        <tr class="item">
            <td><input type="checkbox" class="liu"></td>
            <td><img src="./image/1.jpg" width="50%"></td>
            <td class="price">20¥</td>
            <td>
                <ul class="num">
                    <li >
                        <button class="add">+</button>
                    </li>
                    <li class="count">
                        <input type="text" class="input" value="1" readonly>
                    </li>
                    <li >
                        <button class="reduce" disabled>-</button>
                    </li>
                </ul>
            </td>
            <td class="total">1</td>
            <td class="del"><button>删除</button></td>
        </tr>

        <tr class="item">
            <td>
                <input type="checkbox" class="liu">
            </td>
            <td>
                <img src="./image/2.jpg" width="50%">
            </td>
            <td class="price">30¥</td>
            <td>
                <ul class="num">
                    <li >
                        <button class="add">+</button>
                    </li>
                    <li  class="count">
                        <input type="text" class="input" value="1" readonly>
                    </li>
                    <li >
                        <button class="reduce" disabled>-</button>
                    </li>
                </ul>
            </td>
            <td class="total">1</td>
            <td class="del"><button>删除</button></td>
        </tr>

        <tr class="item">
            <td><input type="checkbox" class="liu">
            </td>
            <td>
                <img src="./image/3.jpg" width="50%">
            </td>
            <td class="price">40¥</td>
            <td>
                <ul class="num">
                    <li >
                        <button class="add">+</button>
                    </li>
                    <li class="count">
                        <input type="text" class="input" value="1" readonly>
                    </li>
                    <li >
                        <button class="reduce" disabled>-</button>
                    </li>
                </ul>
            </td>
            <td class="total">1</td>
            <td class="del"><button>删除</button></td>
        </tr>

        <tr class="item">
            <td><input type="checkbox" class="liu">
            </td>
            <td>
                <img src="./image/4.jpg" width="50%">
            </td>
            <td class="price">50¥</td>
            <td>
                <ul class="num">
                    <li >
                        <button class="add">+</button>
                    </li>
                    <li  class="count">
                        <input type="text" class="input" value="1" readonly>
                    </li>
                    <li >
                        <button  class="reduce" disabled>-</button>
                    </li>
                </ul>
            </td>
            <td class="total">1</td>
            <td class="del"><button>删除</button></td>
        </tr>
       </tbody>
     </table>
     <div class="foot">
        <div class="bottom">
        已经选中<i id="totalNum">0</i>件商品&nbsp;&nbsp;&nbsp;商品总价为:<i id="total_price">0¥</i>
       <button class="jiesuan">去结算</button>
       </div>
     </div>

</body>
    <script>
        let adds = document.querySelectorAll('.add')
        let reduces = document.querySelectorAll('.reduce')
        let prices =document.querySelectorAll('.price')
        let total_price = document.querySelector('#total_price')
        let totalNum = document.querySelector('#totalNum')
        let dels = document.querySelectorAll('.del')
        let totals =document.querySelectorAll('.total')
        let inputs = document.querySelectorAll('.input')
        // 获取父元素
        let carBody = document.querySelector('#carBody')
        let liu = document.querySelectorAll('.liu')
        let all = document.querySelector('.all')
        
        all.addEventListener('click',function(){
            for(let i = 0; i < liu.length; i++){
                liu[i].checked = all.checked
            }
        })

        for( let i = 0; i < adds.length ; i++){
              totals[i].innerHTML = prices[i].innerHTML
               // 增加
              adds[i].addEventListener('click',function(){
              inputs[i].value++
              reduces[i].disabled = false
              totals[i].innerHTML = parseInt(prices[i].innerHTML)*inputs[i].value + '¥'
             // 计算现在总额
             sumMoney()
             })
              // 减少
              reduces[i].addEventListener('click',function(){
              inputs[i].value--
              totals[i].innerHTML = parseInt(prices[i].innerHTML)*inputs[i].value + '¥'
               if(inputs[i].value <= 1) {
                reduces[i].disabled = true
               }
              // 计算现在总额
              sumMoney()
             })
             // 删除
              dels[i].addEventListener('click',function(){
                 // 父元素.removeChild(子元素)
                 carBody.removeChild(this.parentNode)
                 sumMoney()
              })
            }
             
              // 总价 result函数
            function sumMoney(){
                let totals =document.querySelectorAll('.total')
                let inputs = document.querySelectorAll('.input')
                let num = 0
                let sum = 0
                for( let i = 0; i < totals.length; i++){
                    sum = sum + parseInt(totals[i].innerHTML)
                    num = num + Number(inputs[i].value)
                }
                total_price.innerHTML = sum + '¥'
                totalNum.innerHTML = num
              }
              sumMoney()
    </script>
</html>

到了这里,关于javascript+css+html购物车案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【学习笔记46】JavaScript购物车的实现

    1、将通过数据重构页面 查询数据, 渲染页面 2、全选 选中全选按钮后, 根据全选按钮的选中状态, 修改所有商品的选中状态 重新渲染视图 3、清空购物车 清空商品数据 重新渲染视图 4、结算 找到所有选中的商品 计算所有选中商品各自的总价 计算所有选中商品的总价之和 5、

    2024年02月08日
    浏览(44)
  • HTML淘宝购物车页面的实现

    一、实验目的和要求 本实验任务用HTML基本标签制作一个简单的淘宝购物车页面,具体要求如下: 以纯文本格式保存为*.html文件 使用表格标签、div标签、span标签、图像标签等实现效果设计 启用浏览器,打开该文件或在地址栏中直接输入存放该文件的地址 二、 实验原理 首先

    2024年02月11日
    浏览(47)
  • 微信小程序实现商品加入购物车案例

    思考: 购物车中的数据保存在哪里?用哪种数据结构进行保存? 小程序中可能有多个页面需要对购物车中的数据进行操作,因此我们想到把数据存到全局中。可以使用 wx.setStorageSync() 储存,用 wx.getStorageSync() 进行获取,以数组格式方便对数据进行操作。 一、商品加入购物车

    2024年02月10日
    浏览(51)
  • 【Vue实战】使用vue实现购物车案例

    1. 实现步骤 【备注】这里的接口地址目前(2022年6月)还是可以用的哦~ 2. 实现 2.1 代码结构 使用的样式是Boostrap,需要npm i bootstrap,然后在main.js中引入bootstrap。 2.2 Header头部的代码 2.3 Goods商品组件代码 代码: 2.4 Footer组件代码 2.5 Counter组件代码 2.6 App.vue根组件代码 2.7 event

    2024年02月08日
    浏览(51)
  • 使用JavaScript实现动态生成并管理购物车的深入解析

    在当前的互联网时代,电子商务已成为我们日常生活的重要组成部分。购物车作为电子商务网站的核心功能之一,其实现方式对于用户体验至关重要。本文将深入探讨如何使用JavaScript实现一个动态生成并管理购物车的功能,并详细介绍其实现细节,同时附上相关代码。 购物

    2024年01月24日
    浏览(92)
  • Html购物车

    目录 一.登陆界面 二.注册界面 三.购物车界面  我的登陆界面用正则判断,昵称输入框的输入要求时3到6个大写或小写字母, placeholder时信息提示 ,它在输入框中显示,当你在输入框中输入值时,就会消失  我写了非空判断,在没有输入值就点击登陆时,就会弹出提示框(

    2024年02月08日
    浏览(48)
  • 使用JavaScript和Vue.js框架开发的电子商务网站,实现商品展示和购物车功能

    引言: 随着互联网的快速发展和智能手机的普及,电子商务行业正迎来一个全新的时代。越来越多的消费者选择网上购物,而不再局限于传统的实体店。这种趋势不仅仅是改变了消费者的习惯购物,也给企业带来了巨大的商机。为了不断满足消费者的需求,电子商务网站需要

    2024年02月15日
    浏览(59)
  • 14-案例:购物车

    需求说明:         1. 渲染功能                 v-if/v-else v-for :class         2. 删除功能                 点击传参 filter 过滤覆盖原数组         3. 修改个数                 点击传参 find 找对象         4. 全选反选                 计算属性 computed 完整写法 get/

    2024年02月12日
    浏览(51)
  • 使用Vue.js框架的指令和事件绑定实现一个购物车的页面布局

    使用了v-model指令来实现全选/全不选的功能,当全选框被点击时,isAllChecked的值会被改变。 使用了v-if指令来判断购物车中是否有商品,如果有商品则渲染商品列表,否则显示购物车为空的提示。 使用了v-for指令来遍历datalist数组,渲染每个商品项。 使用了@change事件来监听商

    2024年02月12日
    浏览(54)
  • vue购物车案例(源码)

    全部效果的代码: 最终实现的效果  购物车功能实现 (1)实现全选,选中购物车中所有内容 (2)点击增加和减少按钮,每个商品的数量发生变化,对应的金额会变化 (3)动态计算总价,商品总数 (4)点击操作中的删除,或者下面的删除所选商品按钮可以删除商品 (5)

    2024年02月08日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包