用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 相关文章推荐
JavaScript 数组循环引起的思考
Jan 01 Javascript
nullJavascript中创建对象的五种方法实例
May 07 Javascript
去掉gridPanel表头全选框的小例子
Jul 18 Javascript
jQuery实现友好的轮播图片特效
Jan 12 Javascript
jquery事件preventDefault()方法用法实例
Jan 16 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
Sep 17 Javascript
微信小程序中input标签详解及简单实例
May 18 Javascript
详解vue中使用express+fetch获取本地json文件
Oct 10 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
Mar 26 Javascript
Layer弹出层动态获取数据的方法
Aug 20 Javascript
浅谈vue 单文件探索
Sep 05 Javascript
Vue watch响应数据实现方法解析
Jul 10 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
制作美丽的拉花
2021/03/03 冲泡冲煮
global.php
2006/12/09 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
python字符串连接方法分析
2016/04/12 Python
python的Tqdm模块的使用
2018/01/10 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
高级运动鞋:GREATS
2019/07/19 全球购物
如何提高MySql的安全性
2014/06/19 面试题
财务会计大学生自我评价
2014/04/09 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
推普周活动总结
2014/08/28 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
校园安全主题班会
2015/08/12 职场文书
科级干部培训心得体会
2016/01/06 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python