JS实现购物车基本功能


Posted in Javascript onNovember 08, 2020

JS实现购物车商品 加、减、单选、全选、删除、手动输入、价格更新等功能,供大家参考,具体内容如下

JS实现购物车基本功能

JavaScript代码

$(function(){
 
 $("#footer").hover(function(){
 $("#footer").css({"border":"#e00"})
 },)
 
 var inputs=document.getElementsByName("good-id");
 var all=document.getElementsByName("all")[0];
 
 all.onclick=function(){
 for(var i=0;i<inputs.length;i++){
 inputs[i].checked=this.checked;
 }
 sumprice();
 }
 
 for(var i=0;i<inputs.length;i++){
 inputs[i].onclick=function(){
 var count=0;
 for(var j=0;j<inputs.length;j++){
 if(inputs[j].checked==true){
 count++
 }
 }
 if(count<inputs.length){
 all.checked=false;
 }else{
 all.checked=true;
 }
 sumprice();
 }
 }
 
 //减少
 var minus=document.getElementsByName("minus");
 for(var i=0;i<minus.length;i++){
 minus[i].onclick=function(){
 var counts=this.nextElementSibling;
 var count=parseInt(counts.value);
 if(count>1){
 counts.value=--count;
 }
 sumprice();
 }
 }
 //增加
 var plus=document.getElementsByName("plus");
 for(var i=0;i<plus.length;i++){
 plus[i].onclick=function(){
 var counts=this.previousElementSibling;
 var count=parseInt(counts.value);
 counts.value=++count;
 sumprice();
 }
 }
 
 //手动输入
 var counts=document.getElementsByName("count");
 for(var i=0;i<counts.length;i++){
 counts[i].onblur=function(){
 var count=parseInt(this.value);
 if(isNaN(count)||count<1){
 count=1;
 }
 this.value=count;
 sumprice();
 }
 }
 
 
 //计算
function sumprice() {
 var tbody = document.getElementById("cart-goods-list");
 var tbodyTr = tbody.getElementsByTagName("tr");
 var sumprice=0;
 for(var i = 0; i < tbodyTr.length; i++) {
 //获取单价
 var priceEm = tbodyTr[i].getElementsByClassName("price-em")[0];
 var price = parseFloat(priceEm.innerText);

 //获取数量
 var counts = tbodyTr[i].getElementsByClassName("combo-value")[0];
 var count = parseInt(counts.value);
 //乘积
 var chengji=price*count;
 //把乘积弄到金额里面
 var amountEm=tbodyTr[i].getElementsByClassName("amount-em")[0];
 amountEm.innerText=chengji.toFixed(2);
 
 //获取单选框
 var liD=tbodyTr[i].getElementsByTagName("input")[0];
 if(liD.checked){
 sumprice+=chengji;
 }
 }
 var zong=document.getElementById("total-amount-em");
 zong.innerText=sumprice.toFixed(2);
}
 
 //删除
 document.getElementById("cart-delete").onclick=function(){
 var tbody = document.getElementById("cart-goods-list");
 var del=[];
 for(var i=0;i<inputs.length;i++){
 if(inputs[i].checked){
 del.push(inputs[i].parentElement.parentElement);
 }
 }
 for(var i=0;i<del.length;i++){
 tbody.removeChild(del[i]);
 }
 all.checked=false;
 sumprice();
 }
 
 document.getElementById("total-amount").onmouseover=function(){
 document.getElementById("total-amount").style.cursor="pointer";
 }
 
 document.getElementById("total-amount").onclick=function(){
 var tbody = document.getElementById("cart-goods-list");
 var tr=document.createElement("tr");
 tr.innerHTML='<tr><td><input type="checkbox" name="good-id" value="1"></td><td class="goods"><div class="goods-image"><img src="./pic/goods/1.jpg"></div><div class="goods-information"><h3>Dior 迪奥 花漾甜心小姐 女士淡香水</h3><ul><li>50毫升</li><li>不支持7天无理由退货</li></ul></div></td><td><span class="price">¥<em class="price-em">498.00</em></span></td><td><div class="combo"><input type="button" name="minus" value="-" class="combo-minus"><input type="text" name="count" value="1" class="combo-value"><input type="button" name="plus" value="+" class="combo-plus"></div></td><td><strong class="amount">¥<em class="amount-em">498.00</em></strong></td></tr>';
 tbody.appendChild(tr);
 }
})

CSS代码

@charset "utf-8";

#main{
 padding: 30px 0px;
}

#cart{
 background: #FFFFFF;
 padding: 40px;
}

#cart h1{
 line-height: 40px;
 padding: 0px 0px 10px 0px;
}

table.form{
 border-collapse: collapse;
 empty-cells: show;
 margin: 20px 0px;
 padding: 0px;
 table-layout: fixed;
 width: 100%;
}

table.form th,
table.form td{
 border-bottom: 1px solid #DDDDDD;
 padding: 15px 10px;
 text-align: left;
}

table.form{
 border-top: 3px solid #DDDDDD;
}

.goods .goods-image img{
 border: 1px solid #DDDDDD;
 float: left;
 height: 100px;
 margin: 0px 20px 0px 0px;
}

.goods .goods-information{
 float: left;
}

.goods .goods-information ul{
 color: #666666;
 font-size: 12px;
 line-height: 20px;
 margin:10px 0px 0px 0px;
}

.price,
.amount,
#total-amount{
 color: #E00000;
}

#total-amount{
 font-size: 22px;
}

.price em,
.amount em,
#total-amount em{
 font-style: normal;
}

.combo .combo-minus,
.combo .combo-value,
.combo .combo-plus{
 background: #FFFFFF;
 border: 1px solid #DDDDDD;
 color: #333333;
 float: left;
 font-weight: bold;
 margin: 0px;
 outline: none;
 text-align: center;
}

.combo .combo-minus,
.combo .combo-plus{
 font-size: 16px;
 height: 26px;
 line-height: 26px;
 padding: 0px;
 width: 24px;
}

.combo .combo-value{
 border-left: none;
 border-right: none;
 height: 20px;
 line-height: 20px;
 padding: 2px;
 width: 40px;
}

#cart-delete{
 margin-left: 20px;
}

#settlement{
 background: #E00000;
 border: none;
 color: #FFFFFF;
 float: right;
 font-size: 16px;
 height: 40px;
 line-height: 40px;
 margin: 0px;
 outline: none;
 padding: 0px;
 width: 160px;
}

HTML代码

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title>商城</title>
 <link rel="stylesheet" href="./css/common.css" rel="external nofollow" >
 <link rel="stylesheet" href="./iconfont/iconfont.css" rel="external nofollow" >
 <link rel="stylesheet" href="./css/cart.css" rel="external nofollow" >
 <script type="text/javascript" src="js/jquery-3.1.1.js"></script>
 <script type="text/javascript" src="./js/cart2.js"></script>
 </head>
 <body>
 <div id="topbar">
 <div class="container">
 <div id="topbar-location">
 <i class="iconfont icon-location"></i>
 <a href="#">北京</a>
 </div>
 <div id="topbar-menu">
 <ul>
 <li>
 <a href="#"class="red">登录</a>
 </li>
 <li class="separator">|</li>
 <li>
 <a href="./register.html" rel="external nofollow" >免费注册</a>
 </li>
 <li class="separator">|</li>
 <li>
 <a href="#">我的订单</a>
 </li>
 <li class="separator">|</li>
 <li>
 <a href="#">收藏夹</a>
 </li>
 <li class="separator">|</li>
 <li>
 <a href="#">帮助中心</a>
 </li>
 </ul>
 </div>
 </div>
 </div>
 <div id="header">
 <div class="container">
 <div id="header-logo">
 <a href="./index.html" rel="external nofollow" >
 <h1>LOGO</h1>
 </a>
 </div>
 <div id="header-search">
 <div id="header-search-combobox">
 <form action="#" method="post">
 <input type="text" name="keywords" placeholder="搜索" id="header-search-combobox-text">
 <button type="submit" id="header-search-combobox-button">
 <i class="iconfont icon-search"></i>
 </button>
 </form>
 </div>
 <div class="clear">
 <ul id="header-search-hotkeywords">
 <li>
 <strong>热搜:</strong>
 </li>
 <li>
 <a href="#">笔记本</a>
 </li>
 <li class="separator">|</li>
 <li>
 <a href="#">平板</a>
 </li>
 <li class="separator">|</li>
 <li>
 <a href="#">手机</a>
 </li>
 <li class="separator">|</li>
 <li>
 <a href="#">墨盒</a>
 </li>
 </ul>
 <a href="#"id="header-search-advancedsearch">高级搜索</a>
 </div>
 </div>
 <div id="header-cart">
 <i class="iconfont icon-cart"></i>
 <a href="#">购物车</a>
 <strong>0</strong>
 </div>
 </div>
 </div>
 <div id="navigation">
 <div class="container">
 <div id="navigation-category">
 <div id="navigation-category-heading">
 <div class="float-left">
 <i class="iconfont icon-menu"></i>
 <strong>全部商品分类</strong>
 </div>
 <div class="float-right">
 <i class="iconfont icon-dropdown"></i>
 </div>
 </div>
 <div id="navigation-category-content">
 <dl>
 <dt>美容彩妆</dt>
 <dd>
 <a href="#">护肤</a>
 <em>|</em>
 <a href="#">面膜</a>
 <em>|</em>
 <a href="#">防晒</a>
 <em>|</em>
 <a href="#">彩妆</a>
 <em>|</em>
 <a href="#">香水</a>
 </dd>
 </dl>
 <dl>
 <dt>服饰箱包</dt>
 <dd>
 <a href="#">大牌</a>
 <em>|</em>
 <a href="#">服饰</a>
 <em>|</em>
 <a href="#">箱包</a>
 <em>|</em>
 <a href="#">配饰</a>
 <em>|</em>
 <a href="#">鞋履</a>
 </dd>
 </dl>
 <dl>
 <dt>数码家电</dt>
 <dd>
 <a href="#">手机</a>
 <em>|</em>
 <a href="#">生活</a>
 <em>|</em>
 <a href="#">厨房</a>
 <em>|</em>
 <a href="#">数码</a>
 <em>|</em>
 <a href="#">办公</a>
 </dd>
 </dl>
 <dl>
 <dt>家居个护</dt>
 <dd>
 <a href="#">洗护</a>
 <em>|</em>
 <a href="#">居家</a>
 <em>|</em>
 <a href="#">女性</a>
 <em>|</em>
 <a href="#">宠物</a>
 <em>|</em>
 <a href="#">家纺</a>
 </dd>
 </dl>
 <dl>
 <dt>运动户外</dt>
 <dd>
 <a href="#">运动服饰</a>
 <em>|</em>
 <a href="#">运动鞋</a>
 <em>|</em>
 <a href="#">户外服饰</a>
 <em>|</em>
 <a href="#">户外鞋靴</a>
 <em>|</em>
 <a href="#">户外装备</a>
 </dd>
 </dl>
 <dl>
 <dt>环球美食</dt>
 <dd>
 <a href="#">饮品</a>
 <em>|</em>
 <a href="#">零食</a>
 <em>|</em>
 <a href="#">粮油</a>
 <em>|</em>
 <a href="#">糕点</a>
 </dd>
 </dl>
 </div>
 </div>
 <div id="navigation-menu">
 <ul>
 <li>
 <a href="#">促销</a>
 </li>
 <li>
 <a href="#">秒杀</a>
 </li>
 <li>
 <a href="#">优惠券</a>
 </li>
 </ul>
 </div>
 </div>
 </div>
 <div id="main">
 <div class="container">
 <div id="cart">
 <h1>购物车</h1>
 <form action="#" method="post">
 <table class="form">
 <thead>
 <tr>
 <th width="8%">选择</th>
 <th width="50%">商品</th>
 <th width="13%">单价(元)</th>
 <th width="15%">数量</th>
 <th width="14%">金额(元)</th>
 </tr>
 </thead>
 <tbody id="cart-goods-list">
 <tr>
 <td>
 <input type="checkbox" name="good-id" value="1">
 </td>
 <td class="goods">
 <div class="goods-image">
 <img src="./pic/goods/1.jpg">
 </div>
 <div class="goods-information">
 <h3>Dior 迪奥 花漾甜心小姐 女士淡香水</h3>
 <ul>
 <li>50毫升</li>
 <li>不支持7天无理由退货</li>
 </ul>
 </div>
 </td>
 <td>
 <span class="price">¥<em class="price-em">498.00</em></span>
 </td>
 <td>
 <div class="combo">
 <input type="button" name="minus" value="-" class="combo-minus">
 <input type="text" name="count" value="1" class="combo-value">
 <input type="button" name="plus" value="+" class="combo-plus">
 </div>
 </td>
 <td>
 <strong class="amount">¥<em class="amount-em">498.00</em></strong>
 </td>
 </tr>
 <tr>
 <td>
 <input type="checkbox" name="good-id" value="2">
 </td>
 <td class="goods">
 <div class="goods-image">
 <img src="./pic/goods/3.jpg">
 </div>
 <div class="goods-information">
 <h3>LANCÔME 兰蔻 嫩肌活肤精华肌底液</h3>
 <ul>
 <li>50毫升</li>
 <li>不支持7天无理由退货</li>
 </ul>
 </div>
 </td>
 <td>
 <span class="price">¥<em class="price-em">598.00</em></span>
 </td>
 <td>
 <div class="combo">
 <input type="button" name="minus" value="-" class="combo-minus">
 <input type="text" name="count" value="1" class="combo-value">
 <input type="button" name="plus" value="+" class="combo-plus">
 </div>
 </td>
 <td>
 <strong class="amount">¥<em class="amount-em">598.00</em></strong>
 </td>
 </tr>
 </tbody>
 <tfoot>
 <tr>
 <td colspan="2">
 <label>
 <input type="checkbox" name="all">
 <span>全选</span>
 </label>
 <a href="#"id="cart-delete">删除</a>
 </td>
 <td colspan="3">
 <span>合计:</span>
 <strong id="total-amount">¥<em id="total-amount-em">0.00</em></strong>
 <input type="submit" value="立即结算" id="settlement">
 </td>
 </tr>
 </tfoot>

 </table>
 </form>
 </div>
 </div>
 </div>
 <div id="footer">
 <div id="footer-promise">
 <div class="container clear">
 <div class="footer-promise-column clear">
 <img src="./img/1.png">
 <dl>
 <dt>100%正品</dt>
 <dd>正品保障 假一赔十</dd>
 </dl>
 </div>
 <div class="footer-promise-column clear">
 <img src="./img/2.png">
 <dl>
 <dt>无忧退货</dt>
 <dd>国内退货 售后无忧</dd>
 </dl>
 </div>
 <div class="footer-promise-column clear">
 <img src="./img/3.png">
 <dl>
 <dt>低价保障</dt>
 <dd>缩减环节 确保低价</dd>
 </dl>
 </div>
 <div class="footer-promise-column clear">
 <img src="./img/4.png">
 <dl>
 <dt>海外发货</dt>
 <dd>海外直邮 闪电发货</dd>
 </dl>
 </div>
 </div>
 </div>
 <div id="footer-link">
 <div class="container clear">
 <div class="footer-link-column">
 <h3>购物指南</h3>
 <ul>
 <li>
 <a href="#" >购物流程</a>
 </li>
 <li>
 <a href="#" >发票制度</a>
 </li>
 <li>
 <a href="#" >账户管理</a>
 </li>
 <li>
 <a href="#" >会员优惠</a>
 </li>
 </ul>
 </div>
 <div class="footer-link-column">
 <h3>支付方式</h3>
 <ul>
 <li>
 <a href="#" >货到付款</a>
 </li>
 <li>
 <a href="#" >网上支付</a>
 </li>
 <li>
 <a href="#" >礼 品 卡</a>
 </li>
 <li>
 <a href="#" >银行转账</a>
 </li>
 </ul>
 </div>
 <div class="footer-link-column">
 <h3>订单服务</h3>
 <ul>
 <li>
 <a href="#" >配送查询</a>
 </li>
 <li>
 <a href="#" >状态说明</a>
 </li>
 <li>
 <a href="#" >取消订单</a>
 </li>
 <li>
 <a href="#" >修改订单</a>
 </li>
 </ul>
 </div>
 <div class="footer-link-column">
 <h3>配送方式</h3>
 <ul>
 <li>
 <a href="#" >配送范围</a>
 </li>
 <li>
 <a href="#" >免邮标准</a>
 </li>
 <li>
 <a href="#" >订单自提</a>
 </li>
 <li>
 <a href="#" >验货签收</a>
 </li>
 </ul>
 </div>
 <div class="footer-link-column">
 <h3>售后服务</h3>
 <ul>
 <li>
 <a href="#" >售后政策</a>
 </li>
 <li>
 <a href="#" >价格保护</a>
 </li>
 <li>
 <a href="#" >退款说明</a>
 </li>
 <li>
 <a href="#" >退 换 货</a>
 </li>
 </ul>
 </div>
 </div>
 </div>
 <div id="footer-menu">
 <ul>
 <li>
 <a href="#" >关于我们</a>
 </li>
 <li class="separator">|</li>
 <li>
 <a href="#" >服务条款</a>
 </li>
 <li class="separator">|</li>
 <li>
 <a href="#" >隐私保护</a>
 </li>
 <li class="separator">|</li>
 <li>
 <a href="#" >联系我们</a>
 </li>
 <li class="separator">|</li>
 <li>
 <a href="#" >帮助中心</a>
 </li>
 </ul>
 </div>
 <div id="footer-copyright">
 <p>Copyright © 2016 XXX. All Rights Reserved.</p>
 </div>
 </div>
 </body>

</html>

注:CSS样式代码由于太多上面没有给全,只给了主要代码。小伙伴们可以根据实际情况修改样式。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用Javascript 和 CSS 实现脚注(Footnote)效果
Sep 09 Javascript
JS获取html对象的几种方式介绍
Dec 05 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
Jan 07 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
Aug 19 Javascript
jquery实现简单Tab切换菜单效果
Jul 17 Javascript
jQuery 获取select选中值及清除选中状态
Dec 13 Javascript
JS触摸与手势事件详解
May 09 Javascript
详解vue过滤器在v2.0版本用法
Jun 01 Javascript
基于JavaScript实现幸运抽奖页面
Jul 05 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
Sep 17 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
vue实现树状表格效果
Dec 29 Vue.js
Vue实现购物车基本功能
Nov 08 #Javascript
vue实现顶部菜单栏
Nov 08 #Javascript
Vue实现菜单切换功能
Nov 08 #Javascript
JS使用setInterval计时器实现挑战10秒
Nov 08 #Javascript
JS实现手风琴特效
Nov 08 #Javascript
JS画布动态实现黑客帝国背景效果
Nov 08 #Javascript
vue.js页面加载执行created,mounted的先后顺序说明
Nov 07 #Javascript
You might like
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
php file_get_contents函数轻松采集html数据
2010/04/22 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
javascript工具库代码
2012/03/29 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
javascript几个易错点记录
2014/11/26 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
2016/10/11 Javascript
React 子组件向父组件传值的方法
2017/07/24 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
Element-UI踩坑之Pagination组件的使用
2018/10/29 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
简单学习Python time模块
2016/04/29 Python
Python序列操作之进阶篇
2016/12/08 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
JVM是一个编译程序还是解释程序
2012/09/11 面试题
银行员工职业规划范文
2014/01/21 职场文书
怀念母亲教学反思
2014/04/28 职场文书
质量保证书
2015/01/17 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
JavaScript实现显示和隐藏图片
2021/04/29 Javascript
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android