需求
使用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. Service Fabric基本概念: Node, Application, Service, Partition/Replicas

    作者:张鼎松 (Dingsong Zhang) @ Microsoft 在上一节中,为大家简明扼要的介绍了微软针对现代分布式系统在Azure上实现的相关服务组件.紧接上文内容,本节将为大家介绍Azur ...

  2. Meavn项目中log4j的使用

    两个步骤: 1.在pom.xml中添加: <dependency> <groupId>log4j</groupId> <artifactId>log4j ...

  3. Kafka记录-Kafka简介与单机部署测试

    1.Kafka简介 kafka-分布式发布-订阅消息系统,开发语言-Scala,协议-仿AMQP,不支持事务,支持集群,支持负载均衡,支持zk动态扩容 2.Kafka的架构组件 1.话题(Topic) ...

  4. CodeForces - 455C Civilization (dfs+并查集)

    http://codeforces.com/problemset/problem/455/C 题意 n个结点的森林,初始有m条边,现在有两种操作,1.查询x所在联通块的最长路径并输出:2.将结点x和y ...

  5. python 小程序,打印数字

    要求如下: 指定一个数字 x ,然后打印 1到x 的所有数字,并问是否继续打印,否退出程序,是就继续.再指定一个数字 y ,如果 y> x 就显示 x+1 到 y 的所有数字,y <= x ...

  6. crosstab(unknown, unknown) does not exist

    在pgadminIII用到交叉表时,给报了函数不存在 解决方法: 执行sql CREATE EXTENSION tablefunc; 结果 Query returned successfully wi ...

  7. 在ASP.Net环境中,当用户点击报表中的超链接时如何调用Java Script方法?

    问题描述:在ASP.Net环境中,当用户点击报表中的超链接时如何调用Java Script方法? 问题解答: 你可以在TextObject.Hyperlink对象中编写js代码(javascript: ...

  8. EntityFramework用法探索(八)事务处理

    使用 前文中描述的Retail示例 ,在Customer对象的Mapping中设置Name属性:我们构造一个有效的Customer对象,再构造一个无效的Name属性为空的对象. DomainModel ...

  9. CSS —— 选择器

    选择器种类 标签选择器 id选择器 类选择器 通配符 交集选择器 并集选择器 后代选择器 子代选择器 选择器设置样式优先级 默认样式 < 继承样式 < 通配符设置样式 < 标签选择器 ...

  10. saltstack系列~第一篇

    一 简介:从今天开始学习saltstack 二 salt的认证系列操作 1 原理 saltstack通过/etc/salt/pki/目录下面的配置文件的密钥进行通信,master端接受minion端后 ...