html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

原生JS实现购物车结算功能代码(素材家园美化版) - 素材家园

全选

商品单价数量小计操作Casio/卡西欧 EX-TR3505999.88

+

5999.88删除Canon/佳能 PowerShot SX50 HS3888.50

+

3888.50删除Sony/索尼 DSC-WX3001428.50

+

1428.50删除Fujifilm/富士 instax mini 25640.60

+

640.60删除

全选

删除

结 算
合计:¥0.00
已选商品0件︽︾
取消选择

◆◆

/**

* Created by an www.sucaijiayuan.com

*/

window.onload = function () {

if (!document.getElementsByClassName) {

document.getElementsByClassName = function (cls) {

var ret = [];

var els = document.getElementsByTagName('*');

for (var i = 0, len = els.length; i

if (els[i].className.indexOf(cls + ' ') >=0 || els[i].className.indexOf(' ' + cls + ' ') >=0 || els[i].className.indexOf(' ' + cls) >=0) {

ret.push(els[i]);

}

}

return ret;

}

}

var table = document.getElementById('cartTable'); // 购物车表格

var selectInputs = document.getElementsByClassName('check'); // 所有勾选框

var checkAllInputs = document.getElementsByClassName('check-all') // 全选框

var tr = table.children[1].rows; //行

var selectedTotal = document.getElementById('selectedTotal'); //已选商品数目容器

var priceTotal = document.getElementById('priceTotal'); //总计

var deleteAll = document.getElementById('deleteAll'); // 删除全部按钮

var selectedViewList = document.getElementById('selectedViewList'); //浮层已选商品列表容器

var selected = document.getElementById('selected'); //已选商品

var foot = document.getElementById('foot');

// 更新总数和总价格,已选浮层

function getTotal() {

var seleted = 0;

var price = 0;

var HTMLstr = '';

for (var i = 0, len = tr.length; i

if (tr[i].getElementsByTagName('input')[0].checked) {

tr[i].className = 'on';

seleted += parseInt(tr[i].getElementsByTagName('input')[1].value);

price += parseFloat(tr[i].cells[4].innerHTML);

HTMLstr += '

取消选择

'

}

else {

tr[i].className = '';

}

}

selectedTotal.innerHTML = seleted;

priceTotal.innerHTML = price.toFixed(2);

selectedViewList.innerHTML = HTMLstr;

if (seleted == 0) {

foot.className = 'foot';

}

}

// 计算单行价格

function getSubtotal(tr) {

var cells = tr.cells;

var price = cells[2]; //单价

var subtotal = cells[4]; //小计td

var countInput = tr.getElementsByTagName('input')[1]; //数目input

var span = tr.getElementsByTagName('span')[1]; //-号

//写入HTML

subtotal.innerHTML = (parseInt(countInput.value) * parseFloat(price.innerHTML)).toFixed(2);

//如果数目只有一个,把-号去掉

if (countInput.value == 1) {

span.innerHTML = '';

}else{

span.innerHTML = '-';

}

}

// 点击选择框

for(var i = 0; i

selectInputs[i].onclick = function () {

if (this.className.indexOf('check-all') >= 0) { //如果是全选,则吧所有的选择框选中

for (var j = 0; j

selectInputs[j].checked = this.checked;

}

}

if (!this.checked) { //只要有一个未勾选,则取消全选框的选中状态

for (var i = 0; i

checkAllInputs[i].checked = false;

}

}

getTotal();//选完更新总计

}

}

// 显示已选商品弹层

selected.onclick = function () {

if (selectedTotal.innerHTML != 0) {

foot.className = (foot.className == 'foot' ? 'foot show' : 'foot');

}

}

//已选商品弹层中的取消选择按钮

selectedViewList.onclick = function (e) {

var e = e || window.event;

var el = e.srcElement;

if (el.className=='del') {

var input =  tr[el.getAttribute('index')].getElementsByTagName('input')[0]

input.checked = false;

input.onclick();

}

}

//为每行元素添加事件

for (var i = 0; i

//将点击事件绑定到tr元素

tr[i].onclick = function (e) {

var e = e || window.event;

var el = e.target || e.srcElement; //通过事件对象的target属性获取触发元素

var cls = el.className; //触发元素的class

var countInout = this.getElementsByTagName('input')[1]; // 数目input

var value = parseInt(countInout.value); //数目

//通过判断触发元素的class确定用户点击了哪个元素

switch (cls) {

case 'add': //点击了加号

countInout.value = value + 1;

getSubtotal(this);

break;

case 'reduce': //点击了减号

if (value > 1) {

countInout.value = value - 1;

getSubtotal(this);

}

break;

case 'delete': //点击了删除

var conf = confirm('确定删除此商品吗?');

if (conf) {

this.parentNode.removeChild(this);

}

break;

}

getTotal();

}

// 给数目输入框绑定keyup事件

tr[i].getElementsByTagName('input')[1].onkeyup = function () {

var val = parseInt(this.value);

if (isNaN(val) || val <= 0) {

val = 1;

}

if (this.value != val) {

this.value = val;

}

getSubtotal(this.parentNode.parentNode); //更新小计

getTotal(); //更新总数

}

}

// 点击全部删除

deleteAll.onclick = function () {

if (selectedTotal.innerHTML != 0) {

var con = confirm('确定删除所选商品吗?'); //弹出确认框

if (con) {

for (var i = 0; i

// 如果被选中,就删除相应的行

if (tr[i].getElementsByTagName('input')[0].checked) {

tr[i].parentNode.removeChild(tr[i]); // 删除相应节点

i--; //回退下标位置

}

}

}

} else {

alert('请选择商品!');

}

getTotal(); //更新总数

}

console.log("\u767e\u5ea6\u641c\u7d22\u3010\u7d20\u6750\u5bb6\u56ed\u3011\u4e0b\u8f7d\u66f4\u591aJS\u7279\u6548\u4ee3\u7801");

// 默认全选

checkAllInputs[0].checked = true;

checkAllInputs[0].onclick();

}

java循环购物车结算系统_原生JS实现购物车结算功能代码相关推荐

  1. 幸运抽奖java技术文档_原生js轮盘抽奖实例分析(幸运大转盘抽奖)

    效果图: 所需图片素材: 这张图是pointer.png的位置的. turntable-bg.jpg这张是转盘背景图,在背景位置. 这张是turntable.png位置的. 需要这三张图片,如果要实现 ...

  2. 如何用原生jS做购物车

    如何用原生jS做购物车 今天给大家分享如何用原生js做购物车,我们都逛过淘宝.京东这样购物网站,像这种购物网站,购物车是肯定少不了的 ,我们在天猫上购物,一开始一个页面有很多种商品,然后你在这里面看中 ...

  3. 怎样编写html购物车结算页面,原生JS实现购物车结算功能

    原生JS实现购物车结算功能 @charset "utf-8"; *{margin:0;padding:0;list-style-type:none;} a{color:#666;t ...

  4. 简易灯箱画廊设计html,原生Js实现的画廊功能

    原生Js实现画廊功能,点击图片,在下方出现相应放大图片.给a标签绑定onclick点击事件.这里上方的小图和下方将要展示大图,都是同一张图片,只是上下两个img的style中设置了不同的width和h ...

  5. 原生js调用手机拍照功能

    原生js调用手机拍照功能 此功能主要用于混合App开发时手机拍照上传图片的功能! 话不多说直接上代码! 注:此代码在浏览器中运行时会报错,必须打开调试功能在手机上运行才可以! // html部分 // ...

  6. 七夕静态页面html,html5+CSS3+JS实现七夕言情功能代码

    因为今天8月28日就是中国的情人节-七夕,作为程序猿一枚的我就只有在家敲代码咯!但我还是有一颗脱单的心:制作了h5+css+js界面祝小伙伴们:七夕快乐 具体的功能有: 1.下雪的背景动画 2.下面的 ...

  7. java实现选项卡定时轮播_原生js面向对象编程-选项卡(自动轮播)

    原生js面向对象编程-选项卡(自动轮播) }#div1 input{color:#fff;width:100px;height:40px;background:darkseagreen;border: ...

  8. java使用重绘实现拖动_原生JS使用Canvas实现拖拽式绘图功能

    一.实现的功能 1.基于oop思想构建,支持坐标点.线条(由坐标点组成,包含方向).多边形(由多个坐标点组成).圆形(包含圆心坐标点和半径)等实体 2.原生JavaScript实现,不依赖任何第三方j ...

  9. 微信通讯录java实现_原生JS实现微信通讯录

    最近工作当中再一次遇到要实现一个车辆列表,要求能够像微信通讯录一样,实现右侧滑动,点击功能,并且滑动过程中,能够有提示.原来用jquery实现过一次,为了精简代码,现在用原生的实现一次.想必工作中大家 ...

最新文章

  1. Struts2学习总结二
  2. Spring MVC:表单处理卷。 2 –复选框处理
  3. 【Python】Mac下Sublime Text3配置Python3开发环境
  4. BZOJ1811 [Ioi2005]mea
  5. Javascript button onclick和input type button在form中失效解决方案
  6. makefile工作笔记0001---认识使用makefile
  7. Java二维码的制作
  8. 实战 Windows Server 2012 群集共享卷
  9. 正点原子STM32(基于标准库)
  10. paraview启动失败:failed to get wglChoosePixelFormatARB
  11. 局域网IP地址查看软件V2.0使用教程 Python办公自动化
  12. Python编程中的常见语句
  13. 三维游戏中的角色动画
  14. 计算机网络——单播、多播(组播)、广播
  15. FFmpeg源代码简单分析-编码-av_write_trailer()
  16. 旋转木马 css,CSS:3D旋转木马效果
  17. BTC回踩周线布林带中轨,与之对应的则是EMA144均线。
  18. 一年收购三家科技公司,金拱门不做汉堡改行人工智能了?
  19. java学习之路之javaSE基础1
  20. 使用ResponseBodyAdvice实现下载注解

热门文章

  1. ubuntu时区设置
  2. 编写高度可维护javascript代码的几点关键性原则
  3. 使用Visual Studio 2008 进行远程调试
  4. 菜鸟学exchange之一:exchange邮件系统的简单安装和部署
  5. python3 检测端口是否开放
  6. 设置 docker容器 禁用网络
  7. ecshop 2.x/3.x sql注入/任意代码执行漏洞
  8. RPC RESTful 解释
  9. 得到 ip/掩码 的起始结束地址
  10. Win7搭建Telnet服务器 解决Access Denied: Specified user is not is not a member of TelnetClients group