需求
使用JS实现购物车功能02

具体代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>购物车02</title>
</head>
<body>
<table align="center" border="2" id = "shop">
<tr>
<th colspan="4" align="center">商品列表<input id="add" type="button" value="一键上架"></th>
</tr>
<tr>
<th>商品序号</th>
<th>商品名称</th>
<th>出售价格</th>
<th>操作</th>
</tr>
</table>
<br>
<br>
<br>
<br>
<br>
<table align="center" border="2" id = "cart">
<tr>
<th colspan="4" align="center">购物车<input id="clear" type="button" value="一键清空"></th>
</tr>
<tr>
<th>商品名称</th>
<th>商品价格</th>
<th>商品数量</th>
<th>操作</th>
</tr>
</table> <h3 id="total" align="center">总价: ¥0.0</h3> <script type="text/javascript">
var goods_name = ["阿尔卑斯棒棒糖","耳机","北京糖葫芦","智能扫地机器人"];
var goods_price = ["1.5","30","5","258"];
//一键上架
var add = document.getElementById("add");
add.onclick = function(){
var shop = document.getElementById("shop");
for(var i = 0; i< goods_name.length;i++){
var row = shop.insertRow();
row.insertCell().innerHTML = i + 1;
row.insertCell().innerHTML = goods_name[i];
row.insertCell().innerHTML = "¥" + goods_price[i];
row.insertCell().innerHTML = "<button id='" + i + "' onclick='addCart(this);'>加入购物车</button>";
}
this.setAttribute("disabled", true);
} var cartData = { } var index = 0;
//准备加入购物车的数据
function addCart(btn) { var gname = goods_name[btn.id];
var gobj = cartData[gname]; if(!gobj){//没有数据
//新增一条数据
cartData[goods_name[btn.id]] = {
id:btn.id,
count:1,
index:index++
}
}else{
cartData[goods_name[btn.id]].count++;
}
//console.log(cartData);
showCart(cartData);
}
//加入购物车
function showCart(obj){
clearCart();
getTotal(obj);
var cart = document.getElementById("cart");
for(var k in obj){
var row = cart.insertRow();
row.insertCell().innerHTML = k;
row.insertCell().innerHTML = "¥" + goods_price[obj[k].id];
row.insertCell().innerHTML = obj[k].count;
row.insertCell().innerHTML = "<button id='" + k + "' onclick='deleteRow(this);'>删除</button>";
}
}
//清空购物车
var clear = document.getElementById("clear");
clear.onclick = function(){
clearCart();
cartData = {};
}
//清空购物车的方法
function clearCart(){
var cart = document.getElementById("cart");
var rows = cart.rows;
for(var i = rows.length - 1 ; i > 1 ; i--){
cart.deleteRow(i);
}
total = 0.0;
//更新总价
document.getElementById("total").innerHTML = "总价:¥" + total;
} var total = 0.0;
//得到总价
function getTotal(obj){ for(var k in obj){
var subTotal = goods_price[obj[k].id] * obj[k].count;
total += subTotal;
}
//更新总价
document.getElementById("total").innerHTML = "总价:¥" + total; } //删除整行
function deleteRow(btn){
var cart = document.getElementById("cart");
var rowIndex = btn.parentNode.parentNode.rowIndex;
cart.deleteRow(rowIndex);
delete cartData[btn.id];
total = 0.0;
getTotal(cartData);
} </script>
</body>
</html>

效果图
样式比较丑,不要介意哈

JS实现购物车02的更多相关文章

  1. 原生JS实现购物车结算功能代码+zepto版

    html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  2. JS膏集02

    JS膏集02 1.复习 函数也是对象 2.贪食蛇案例 <!DOCTYPE html> <html lang="en"> <head> <m ...

  3. JS自学笔记02

    JS自学笔记02 1.复习 js是一门解释性语言,遇到一行代码就执行一行代码 2.查阅mdn web文档 3.提示用户输入并接收,相比之下,alert只有提示的作用: prompt(字符串) 接收: ...

  4. JS实现购物车01

    需求 使用JS实现购物车功能01 具体代码 <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  5. vue.js实现购物车功能

    购物车是电商必备的功能,可以让用户一次性购买多个商品,常见的购物车实现方式有如下几种: 1. 用户更新购物车里的商品后,页面自动刷新. 2. 使用局部刷新功能,服务器端返回整个购物车的页面html 3 ...

  6. 用vue.js实现购物车功能

    购物车是电商必备的功能,可以让用户一次性购买多个商品,常见的购物车实现方式有如下几种: 1. 用户更新购物车里的商品后,页面自动刷新. 2. 使用局部刷新功能,服务器端返回整个购物车的页面html 3 ...

  7. js实现购物车数量的增加与减少,js实现购物车数量的自增与自减

    js实现购物车数量的增加与减少,js实现购物车数量的自增与自减 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...

  8. 原生JS实现购物车功能

    html <div class="catbox"> <table id="cartTable"> <thead> <t ...

  9. vue.js插件使用(02) vue-router

    概述 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用.vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来.传统的 ...

随机推荐

  1. Microsoft JET Database Engine 错误 '80004005' 未指定错误

    Microsoft JET Database Engine 错误 '80004005'未指定错误 =====解决=======出现这种“未指定错误”时,可以尝试重新注册ASP脚本解释链接库文件在CMD ...

  2. Int2BinaryString.java

    /****************************************************************************** * Compilation: javac ...

  3. Spring + Mybatis 读写分离

    项目背景:项目开发中数据库使用了读写分离,所有查询语句走从库,除此之外走主库. 实现思路是: 第一步,实现动态切换数据源:配置两个DataSource,配置两个SqlSessionFactory指向两 ...

  4. 用Shell编写的俄罗斯方块代码

    用Shell编写的俄罗斯方块代码 不得不承认任何一门语言玩6了,啥都能搞出来啊,竟然用Shell编写出来了一个俄罗斯方块游戏的代码,很有意思,这个代码不是我写出来的,不过大家可以下载一下在window ...

  5. GO语言的进阶之路-面向过程式编程

    GO语言的进阶之路-面向过程式编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们在用Golang写一个小程序的时候,未免会在多个地方调用同一块代码,这个时候如何优化你的代码呢 ...

  6. python自动化运维之路~DAY8

    python自动化运维之路~DAY8 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.线程进程介绍 为了方便我们队线程和进程的理解,我们来画2组图,方便我们对python中的线程 ...

  7. win10重复安装

    使用大白菜启动盘装win10的时候,一直循环的重启然后设置,然后再重启,再设置.陷入了死循环. 解决办法:在自定义快捷键那个界面按 Ctrl+Shift+F3 .这是直接进入桌面的快捷键.

  8. 所有HTTP请求参数及报文查看SERVLET【原】

    HttpRequestServlet.java 说明: 用于接受所有http形式的请求,并把接受到的request中param及getInputStream全打印出来. package king.se ...

  9. luogu P3198 [HNOI2008]遥远的行星

    bzoj 洛谷 这题意是不是不太清楚 真正题意:求\[f_i=\sum_{j=1}^{\lfloor i*A \rfloor} \frac{M_i*M_j}{i-j}\] 似乎只能\(O(n*\lfl ...

  10. Database学习 - mysql 数据库 数据操作

    mysql数据操作 查询语法 select * | field1,field1 ... from 表名 where 条件 group by 字段 having 筛选 order by 字段 limit ...