用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 相关文章推荐
js获取窗口相对于屏幕左边和上边的位置坐标
May 15 Javascript
JQuery.get提交页面不跳转的解决方法
Jan 13 Javascript
jQuery计算文本框字数及限制文本框字数的方法
Mar 01 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
May 11 Javascript
JavaScript解八皇后问题的方法总结
Jun 12 Javascript
AngularJS实现表单验证功能
Jan 09 Javascript
JavaScript的事件机制详解
Jan 17 Javascript
Vue filter介绍及其使用详解
Oct 21 Javascript
Vue中控制v-for循环次数的实现方法
Sep 26 Javascript
ES6基础之展开语法(Spread syntax)
Feb 21 Javascript
Vue动态生成表格的行和列
Jul 18 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
Nov 02 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
php常用的安全过滤函数集锦
2014/10/09 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
Python实现根据IP地址和子网掩码算出网段的方法
2015/07/30 Python
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
python如何随机生成高强度密码
2020/08/19 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
德国家具在线:Fashion For Home
2017/03/11 全球购物
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
超搞笑婚前保证书
2015/05/08 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python