用JavaScript做简易的购物车的代码示例


Posted in Javascript onOctober 20, 2017

下面是我做的一个超简单的购物车,全部都是用原生js做的

css

<style>
  table{
   text-align: center;

  }
  table img{
   width: 50px;
  }
 a {
  text-decoration: none;
  color: red;
}
 </style>

body

<table border="1" cellspacing="0">
  <thead>
  <tr>
   <th>全选 <input type="checkbox" id="ckAll"/></th>
   <th>商品</th>
   <th>单价</th>
   <th>数量</th>
   <th>操作</th>
  </tr>
  </thead>
  <tbody>
   <tr>
    <td><input type="checkbox" name="ck"/></td>
    <td>![](../img2/1.png)</td>
    <td>3</td>
    <td><input type="number" max="10" min="0" step="1" value="2"/></td>
    <td><a href="javascript:void(0);" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="del">删除</a></td>
   </tr>
   <tr><td><input type="checkbox" name="ck"/></td>
    <td>![](../img2/2.png)</td>
    <td>3</td>
    <td><input type="number" max="10" min="0" step="1" value="3"/></td>
    <td><a href="javascript:void(0);" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="del">删除</a></td>


   </tr>
   <tr><td><input type="checkbox" name="ck"/></td>
    <td>![](../img2/3.png)</td>
    <td>3</td>
    <td><input type="number" max="10" min="0" step="1" value="1"/></td>
    <td><a href="javascript:void(0);" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="del">删除</a></td>


   </tr></tbody>
  <tfoot>
  <tr>
   <td colspan="3" align="right">总价:</td>
   <td colspan="2"></td>
  </tr>
  </tfoot>

 </table>
 <a href="javascript:void(0);" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="dels">删除选中项</a>

js

<script>
  window.onload=function(){
   document.getElementById("ckAll").onclick=function(){//当点击全选的复合框时触发事件
    var cks = document.getElementsByName("ck");//获取ck对象
    for(var i=0;i<cks.length;i++){ //循环得到单个tr
     cks[i].checked=this.checked; //得到的每个tr的点击都等于ckAll的点击
    }
   }
   var cks = document.getElementsByName("ck");//创建ck对象
   for(var i=0;i<cks.length;i++){ //循环得到单个tr
    cks[i].onclick=function(){ // 当点击每个当tr的时候都会触发点击事件
      for(var i=0;i<cks.length;i++){// 循环得到单个td
       if(!cks[i].checked){ //如果单个特点的点击等于false 就返回
        document.getElementById("ckAll").checked = false;//那么ckAll就等于false
        return;
       }
      }
     document.getElementById("ckAll").checked = true;//否则就等于true 说明为全选状态
    }
   }
   getSum();
    function getSum(){ //计算的方法
     var tbody = document.getElementsByTagName("tbody")[0];//创建tbody对象
     var sum =0;//先定义sum为0
      for(var i =0;i<tbody.children.length;i++){ //循环得到tr
       var tr = tbody.children[i]; //tbody中的子节点就是tr
       var td = tr.children; //tr的子节点是 td
       var price = parseFloat(td[2].innerText);//td的第二列是价格 得到价格
       var count = parseFloat(td[3].children[0].value); //第三列是数量
       sum+=price*count; //总和就等于价格*数量
       td[3].children[0].onblur=function(){ //当失去焦点的时候触发事件
        getSum();
       }
      }
     var tfoot = document.getElementsByTagName("tfoot")[0]; //创景tfoot对象
     tfoot.children[0].children[1].innerHTML =sum; //tfootd子节点 等于总和
    }

   var dels = document.getElementsByClassName("del");//创建del对象
   for(var i = 0;i<dels.length;i++){//循环得到
    dels[i].onclick=function(){
     this.parentNode.parentNode.remove();
     getSum();
    }
   }
   document.getElementsByClassName("dels")[0].onclick=function(){
     var cks = document.getElementsByName("ck");
    for(var i = cks.length-1;i>=0;i--){
      if(cks[i].checked){
       cks[i].parentNode.parentNode.remove();
      }
    }
    getSum();

   }

  }
</script>

效果图

用JavaScript做简易的购物车的代码示例

这个购物车是在学习js时做的,比较简单,但基本功能还是有的:

  1. 可以全选,单个选择.
  2. 可以单个的删除,删除选中项.
  3. 总计可以根据数量的变化而变化.

大家用在线的编辑器查看一下效果会更好.

如果有问题的话,可以随时交流... (过两天会用jQury在做一个购物车的例子)

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

Javascript 相关文章推荐
Mootools 1.2教程 滑动效果(Slide)
Sep 15 Javascript
图像替换新技术 状态域方法
Jan 28 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
Oct 19 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
Dec 28 Javascript
鼠标拖动实现DIV排序示例代码
Oct 14 Javascript
javascript验证身份证完全方法具体实现
Nov 18 Javascript
javascript制作的网页侧边弹出框思路及实现代码
May 21 Javascript
js解决movebox移动问题
Mar 29 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
Aug 31 Javascript
详解如何在Angular中快速定位DOM元素
May 17 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
Jan 31 Javascript
使用vue-router在Vue页面之间传递数据的方法
Jul 15 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
Oct 20 #Javascript
phantomjs导出html到pdf的方法总结
Oct 19 #Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
Oct 19 #Javascript
vue resource post请求时遇到的坑
Oct 19 #Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
Oct 19 #Javascript
JavaScript适配器模式详解
Oct 19 #Javascript
JavaScript门面模式详解
Oct 19 #Javascript
You might like
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
JQuery 常用方法基础教程
2009/02/06 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
2019/04/19 Javascript
vue中created和mounted的区别浅析
2019/08/13 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
Python实现DDos攻击实例详解
2019/02/02 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
Python timeit模块原理及使用方法
2020/10/10 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
英国医生在线预约:Top Doctors
2019/10/30 全球购物
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
采购文员岗位职责
2013/11/20 职场文书
中医专业职业生涯规划书范文
2014/01/04 职场文书
思想汇报格式
2014/01/05 职场文书
优秀班主任申报材料
2014/12/16 职场文书
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android