javascript怎么实现购物车效果
导读:收集整理的这篇文章主要介绍了javascript怎么实现购物车效果,觉得挺不错的,现在分享给大家,也给大家做个参考。javascript实现购物车效果的方法:1、使用table来进行界面布局;2、自行封装getClasses函数;3、通过j...
收集整理的这篇文章主要介绍了javascript怎么实现购物车效果,觉得挺不错的,现在分享给大家,也给大家做个参考。javascript实现购物车效果的方法:1、使用table来进行界面布局;2、自行封装getClasses函数;3、通过js实现选中和全选商品,以及商品数量的增减等功能即可。
本文操作环境:windows7系统、javascript1.8.5版,DELL G3电脑
javascript怎么实现购物车效果?
用javascript实现的购物车实例
基于javascript实现的购物车实例:
首先是效果和功能,如下图所示,具有购物车的基本功能。
包括1、选中和全选商品;2、商品数量的增减;3、单个商品价格的计算;4、总价的计算;5、删除商品。
一、界面布局
使用的是table来进行布局,由于用js来获取tr 和 td节点的时候,可以获取带下标的元素集合,操作起来较为便利。
htML+css的代码如下:
!DOCTYPE html> html> head> meta charset="UTF-8"> tITle> 购物车/title> style> *{ margin:0px; padding:0px; } table,td,td{ border:1px solid #000000; font-Size:10px; } table{ display: block; } img{ float:left; } tr{ text-align: center; } #box{ width:900px; } #cart{ float:left; border-collapse:collapse; } #head{ background:#F0FFFF; } #seTTLement{ margin-top:20px; width:805px; height:30px; border:1px solid #EBEBEB; float:left; background: #EBEBEB; font-size:10px; line-height:30px ; } #settlement div{ float:left; } #addupto{ color:#ff0000; font-weight:700; } #NumofGoods{ color:#ff0000; font-weight:700; } .goods{ padding:5px; text-align: left; } .number{ position:relative; left:19px; width:60px; height:10px; border:1px solid #cccccc; } .acc{ width:40px; height:10px; border-left:0px solid #cccccc; border-right:0px solid #cccccc; line-height: 10px; float:left; } .desymbol{ width:10px; height:10px; line-height: 10px; background:#ccc; float:left; cursor:pointer; } .adsymbol{ width:10px; height:10px; line-height: 10px; background:#ccc; float:right; cursor: pointer; } /*.dele{ cursor: pointer; } */ .total{ color:#ff0000; font-weight:700; } /style> /head> body> div id="box"> table id="cart"> tr id="head"> td width="50px"> input type="checkbox"> 全选/td> td width="400px; "> 商品/td> td width="100px"> 单价/td> td width="100px"> 数量/td> td width="100px"> 小计/td> td width="50px"> 操作/td> /tr> tr> td> input type="checkbox"> /td> td> img src="img/goods1.jpg"> 外星人笔记本电脑17 R4 15R3 13寸 17寸 alienware今晚吃鸡游戏本/td> td> 12888.00/td> td> div> div> -/div> div> 1/div> div> +/div> /div> /td> td> /td> td> 删除/td> /tr> tr> td> input type="checkbox"> /td> td> img src="img/goods2.jpg"> 任天堂(Nintendo)Switch 家用游戏机 掌机NS智能体感游戏主机/td> td> 2258.00/td> td> div> div> -/div> div> 1/div> div> +/div> /div> /td> td> /td> td> 删除/td> /tr> tr> td> input type="checkbox"> /td> td> img src="img/goods3.jpg"> Microsoft/微软 Surface PRo i5 8G 256G 笔记本平板电脑二合一/td> td> 4999.00/td> td> div> div> -/div> div> 1/div> div> +/div> /div> /td> td> /td> td> 删除/td> /tr> tr> td> input type="checkbox"> /td> td> img src="img/goods4.jpg"> Apple/苹果 10.5 英寸 iPad Pro/td> td> 3666.00/td> td> div> div> -/div> div> 1/div> div> +/div> /div> /td> td> /td> td> 删除/td> /tr> /table> div id="settlement"> div style="width:550px"> input type="checkbox"> 全选/div> div style="width:120px"> 全选商品span id="NumofGoods"> /span> span> 件^/span> /div> div style="width:80px"> 合计:¥span id="addupto"> /span> /div> div style="width:50px; text-align: center; border-left:1px solid #000000; "> 结算/div> /div> /div> script src="cart.js"> /script> /body> /html>
二、javascript代码
自行封装了getClasses()函数,避免兼容性问题。
VAR prices = getClasses("price"), cart = document.getElementById("cart"); acc = getClasses("acc"), totals = getClasses("total"), detracts = getClasses("desymbol"), adds = getClasses("adsymbol"), NumofGoods = document.getElementById("NumofGoods"), addupto = document.getElementById("addupto"), allSelect = getClasses("allSelect"), select = getClasses("select"), dele = getClasses("dele"); count(); countAll(); for(var i=0; iallSelect.length; i++ ){ allSelect[i].onclick = function(){ for(var j=0; jselect.length; j++){ select[j].checked = this.checked; } for(j=0; jallSelect.length; j++){ allSelect[j].checked = this.checked; } //每次点击选框就计算一次总价 countAll(); } } for(i=0; iselect.length; i++){ select[i].onclick = function(){ if(ifAllSelected()){ for(j=0; jallSelect.length; j++){ allSelect[j].checked = true; } } if(ifNotAllSelected()){ for(j=0; jallSelect.length; j++){ allSelect[j].checked = false; } } countAll(); } } for(i=0; iadds.length; i++){ adds[i].onclick = function(){ console.LOG(this.parentNode.childNodes[3].innerHTML); var num = parseInt(this.parentNode.childNodes[3].innerHTML); num += 1; this.parentNode.childNodes[3].innerHTML = num; count(); countAll(); } detracts[i].onclick = function(){ var num = parseInt(this.parentNode.childNodes[3].innerHTML); num -= 1; if(num1){ num=1; } this.parentNode.childNodes[3].innerHTML = num; count(); countAll(); } //删除时也应该重新计算总价,或者先判断商品是否被选中,有选中则重新计算 dele[i].onclick = function(){ cart.childNodes[1].removeChild(this.parentNode); countAll(); } } //避免兼容性问题,自行封装classnamefunction getClasses(className){ var arr = [], nodes = document.getelementsbytagname("*"); for(var i=0; inodes.length; i++){ if(nodes[i].className == className){ arr.push(nodes[i]); } } return arr; } //进行单价的计算,保留两位小数function count(){ for(var i=0; iprices.length; i++){ totals[i].innerHTML = (prices[i].innerHTML*acc[i].innerHTML).toFixed(2); } } //计算总价的函数function countAll(){ var num1=0; var num2=0; //注意,每次计算总价应该重新取得一次select,acc和totals,因为执行删除操作时,会让这几个值发生变化 var select = getClasses("select"), acc = getClasses("acc"), totals = getClasses("total"); for(var i=0; iselect.length; i++){ if(select[i].checked == true){ num1 += parseInt(acc[i].innerHTML); num2 += parseFloat(totals[i].innerHTML); } } NumofGoods.innerHTML = num1; addupto.innerHTML = num2; } //判断是否全部选中或者全部没有选中的函数function ifAllSelected(){ var allSelected = true; for(var i=0; iselect.length; i++){ if(select[i].checked == false){ allSelected = false; } } return allSelected; } function ifNotAllSelected(){ var notAllSelected = false; for(var i=0; iselect.length; i++){ if(select[i].checked == false){ notAllSelected = true; } } return notAllSelected; }
推荐学习:《javascript基础教程》
以上就是javascript怎么实现购物车效果的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: javascript怎么实现购物车效果
本文地址: https://pptw.com/jishu/592250.html