JS实现购物车

news/2024/7/19 13:49:26 标签: JS

JS实现购物车

1.实现思路:

(1)在body中定义一个id="list",将所有商品存放在一个列表中,当进入购物车时如果有两个商品被勾选了,需要计算出总共的价钱和商品的件数以及最贵的商品价格;

(2)在JS中获取元素属性,分别把它们存放在数组中;

(3)点击加号进行商品添加,点击减号进行商品移除;

(4)将上一步用两个点击函数来实现添加和移除;

(5)在JS中用for循环来计算总价钱和比较最贵的商品;

2.代码思路

1.商品列表:

<body>
		<ul id="list">
			<li>
				<input type="button" value="-" />
				<strong>0</strong>
				<input type="button" value="+" />
				单价:<em>10元</em>
				总计:<span>0元</span>
			</li>
			
			<li>
				<input type="button" value="-" />
				<strong>0</strong>
				<input type="button" value="+" />
				单价:<em>5元</em>
				总计:<span>0元</span>
			</li>
			
			<li>
				<input type="button" value="-" />
				<strong>0</strong>
				<input type="button" value="+" />
				单价:<em>6元</em>
				总计:<span>0元</span>
			</li>
			
			<li>
				<input type="button" value="-" />
				<strong>0</strong>
				<input type="button" value="+" />
				单价:<em>8元</em>
				总计:<span>0元</span>
			</li>
			
		</ul>
</body>

 

2.商品的添加与移除:

//商品的添加与移除
			function tab(a){
				var oInput = aLi[a].getElementsByTagName("input")
				var oStrong = aLi[a].getElementsByTagName("strong")[0]
				var oEm = aLi[a].getElementsByTagName("em")[0]
				var oSpan = aLi[a].getElementsByTagName("span")[0]
				
				var num = 0
				
				oInput[1].onclick = function(){
					num++
					oStrong.innerHTML = num
					var oPrice = parseFloat(oEm.innerHTML)
					oSpan.innerHTML = parseFloat(num)*oPrice+"元"
					
					var addShop = count()
//					console.log(addShop)
					oP[0].innerHTML = "商品数量总计:"+addShop+"件"
					
					var all = all_price()
					
					oP[1].innerHTML = "共消费:"+all+"元"
					
					var max = compare()
//					console.log(max)
					oP[2].innerHTML = "商品最贵的是:"+max+"元"
					
					
				}
				oInput[0].onclick = function(){
					num--
					if(num<=0){
						num = 0
					}
					oStrong.innerHTML = num
					var oPrice = parseFloat(oEm.innerHTML)
					oSpan.innerHTML = parseFloat(num)*oPrice+"元"
					
					var addShop = count()
//					console.log(addShop)
					oP[0].innerHTML = "商品数量总计:"+addShop+"件"
					
					var all = all_price()
					
					oP[1].innerHTML = "共消费:"+all+"元"
					
				}
			}

 

3.计算总价值:

//消费总计
			function all_price(){
				var sum = 0
				
				for (var i=0;i<oSpan.length;i++) {
					sum+=parseFloat(oSpan[i].innerHTML)
				}
//				console.log(sum)
				return sum
			}

 

4.商品总数量:

//商品数量求和
			function count(){
				var sum = 0
				
				for (var i=0;i<oStrong.length;i++) {
					sum+=parseFloat(oStrong[i].innerHTML)
				}
//				console.log(sum)
				return sum
			}

 

5.最贵商品价格:

//比较最大值
			function compare(){
				var arr = []
				
				for (var i=0;i<oSpan.length;i++) {
					arr.push(parseFloat(oSpan[i].innerHTML))
				}
				
				arr.sort(function(a,b){
					return b-a
				})
				
				return arr[0]
			}

 

3.实现代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			em{
				font-style: normal;
			}
			ul li{
				list-style: none;
			}
		</style>
	</head>
	<body>
		<ul id="list">
			<li>
				<input type="button" value="-" />
				<strong>0</strong>
				<input type="button" value="+" />
				单价:<em>10元</em>
				总计:<span>0元</span>
			</li>
			
			<li>
				<input type="button" value="-" />
				<strong>0</strong>
				<input type="button" value="+" />
				单价:<em>5元</em>
				总计:<span>0元</span>
			</li>
			
			<li>
				<input type="button" value="-" />
				<strong>0</strong>
				<input type="button" value="+" />
				单价:<em>6元</em>
				总计:<span>0元</span>
			</li>
			
			<li>
				<input type="button" value="-" />
				<strong>0</strong>
				<input type="button" value="+" />
				单价:<em>8元</em>
				总计:<span>0元</span>
			</li>
			
		</ul>
		<p>商品数量总计:0件</p>
		<p>共消费:0元</p>
		<p>商品最贵的是:0元</p>
		<script>
			var oList = document.getElementById("list")
			var aLi = oList.getElementsByTagName("li")
			var oStrong = oList.getElementsByTagName("strong")
			var oP = document.getElementsByTagName("p")
			var oSpan = document.getElementsByTagName("span")
			
			
			for (var i=0;i<aLi.length;i++) {
				tab(i)
			}
			//商品的添加与移除
			function tab(a){
				var oInput = aLi[a].getElementsByTagName("input")
				var oStrong = aLi[a].getElementsByTagName("strong")[0]
				var oEm = aLi[a].getElementsByTagName("em")[0]
				var oSpan = aLi[a].getElementsByTagName("span")[0]
				
				var num = 0
				
				oInput[1].onclick = function(){
					num++
					oStrong.innerHTML = num
					var oPrice = parseFloat(oEm.innerHTML)
					oSpan.innerHTML = parseFloat(num)*oPrice+"元"
					
					var addShop = count()
//					console.log(addShop)
					oP[0].innerHTML = "商品数量总计:"+addShop+"件"
					
					var all = all_price()
					
					oP[1].innerHTML = "共消费:"+all+"元"
					
					var max = compare()
//					console.log(max)
					oP[2].innerHTML = "商品最贵的是:"+max+"元"
					
					
				}
				oInput[0].onclick = function(){
					num--
					if(num<=0){
						num = 0
					}
					oStrong.innerHTML = num
					var oPrice = parseFloat(oEm.innerHTML)
					oSpan.innerHTML = parseFloat(num)*oPrice+"元"
					
					var addShop = count()
//					console.log(addShop)
					oP[0].innerHTML = "商品数量总计:"+addShop+"件"
					
					var all = all_price()
					
					oP[1].innerHTML = "共消费:"+all+"元"
					
				}
			}
			
			//商品数量求和
			function count(){
				var sum = 0
				
				for (var i=0;i<oStrong.length;i++) {
					sum+=parseFloat(oStrong[i].innerHTML)
				}
//				console.log(sum)
				return sum
			}
			
			//消费总计
			function all_price(){
				var sum = 0
				
				for (var i=0;i<oSpan.length;i++) {
					sum+=parseFloat(oSpan[i].innerHTML)
				}
//				console.log(sum)
				return sum
			}
			
			//比较最大值
			function compare(){
				var arr = []
				
				for (var i=0;i<oSpan.length;i++) {
					arr.push(parseFloat(oSpan[i].innerHTML))
				}
				
				arr.sort(function(a,b){
					return b-a
				})
				
				return arr[0]
			}
			
			
			
		</script>
	</body>
</html>

 

4.运行截图


http://www.niftyadmin.cn/n/1530216.html

相关文章

学什么就业前景好的专业_8大类专业中就业前景好的10个专业,赶紧收藏起来

大学里哪些专业就业前景好、比较“热门”是广大考生和家长朋友们十分关心的问题&#xff0c;但是这么多专业和院校怎么选择呢&#xff1f;其实就业前景好的专业和国家发展现状离不开的&#xff0c;计算机、机械、电气、土木、医学等专业就业都是非常不错的&#xff0c;以下是为…

JS实现页面刷新的方法

1.JS实现普通页面刷新 测试页面&#xff1a; <!DOCTYPE html> <html> <head><title>页面刷新</title> </head> <body><h1 id"text">页面刷新</h1><button onclick"fresh()">刷新</butto…

非橙勿扰_非”橙“勿扰,可甜可盐的橙色系家居来了

橙色&#xff0c;是电磁波的可视光部分中的长波&#xff0c;界于红色和黄色之间的混合色。它是暖色系中最温暖的颜色&#xff0c;总是能给人种种温暖的情绪&#xff0c;枫叶的绚烂、橙子的甘香、麦田的丰盈、夕阳余晖的温暖......而属于橙色系的颜色也有很多&#xff0c;包括橘…

最大子段和问题蛮力法、分治法、动态规划法(C/C++)

最大子段和问题&#xff08;C/C&#xff09; 一、蛮力法 #include<iostream> using namespace std; int MaxSum(int a[], int n) {int i,j;int maxSum 0;for(i 0; i < n; i){int sum 0;for(j i; j < n; j){sum a[j];if(sum > maxSum){maxSum sum;}}}ret…

假币问题(C/C++)

假币问题 1.已知假币比真币轻 #include<iostream> using namespace std; const int N8; int a[N]{2,2,1,2,2,2,2,2}; int Coin(int low,int high,int n) {int i,num1,num2,num3;int add10,add20;if(n1)return low1;if(n%30)num1num2n/3;elsenum1num2n/31;num3n-num1-n…

syb需求分析问卷_暑期活动|校内SYB创业培训

点击蓝字关注我们暑期SYB创业培训2019年7月至8月我校利用暑假期间开展了SYB创业培训&#xff0c;本次SYB创业培训航空工程学院有67位同学参加了本次创业培训。本次培训分为两个时间段&#xff1a;7月12日至21日&#xff0c;8月22日至31日。SYB培训其目的是加深大家对创业了解&a…

最近对问题(蛮力法、分治法)

输入&#xff1a;点对个数&#xff0c; 点对的数值 输出&#xff1a;点对之间的最短距离 一、蛮力法 #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #define MAX 99999 using namespace std; double closestPoints(doubl…

取名字_童装商标取名字大全集

光鲜亮丽的着装不仅是大人的追求&#xff0c;儿童年龄虽小&#xff0c;但爱美之心可一点不比大人少&#xff0c;而且为人父母的&#xff0c;向来把孩子看得比自己还重&#xff0c;给孩子选衣服也是相当的挑剔讲究。童装作为男装和女装之外的第三大服装类别&#xff0c;拥有广大…