用js、html书写大型购物车页面之结算账单


<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>购物车功能的具体实现</title>
		
		<link rel="stylesheet" type="text/css" href="../css/shopping.css"/>
		<link rel="stylesheet" type="text/css" href="../css/reset.css"/>
		<link rel="stylesheet" type="text/css" href="../css/iconfont.css"/>
		
			
		<!--使用JS别忘记将其引入-->
		<script src="../js/shopping.js" type="text/javascript" charset="utf-8"></script>
		
	</head>
	<body>
		<!--导航开始-->
		<div class="nav">
			
			<div class="warp">
				<ul class="nav_ul1">
					<li><a href=""><i class="iconfont">&#xe6d3;</i></a></li>
					<!--请链接到首页-->
					<li><a href="">小米首页</a></li>
					<li><a href="">配送到:达州</a></li>
				</ul>
				
				 <ul class="nav_ul2">
		  	 	  	<li><a href=""></a><span>|</span></li>
						<!--请链接到首页-->
		  	 	  	<li><a href="">小米商城</a><span>|</span></li>
		  	 	  	<li><a href="">MIUI</a><span>|</span></li>
					<li><a href="">LOT</a><span>|</span></li>
					<li><a href="">云服务</a><span>|</span></li>
					<li><a href="">金融</a><span>|</span></li>
					<li><a href="">有品</a></li>
					<li><a href="">企业团购</a></li>
		  	 	  	<li><a href="">下载app</a><span>|</span></li>
		  	 	  	<li><a href="">协议规则</a><span>|</span></li>
		  	 	  	
		  	 	  </ul>
			</div>
			
		</div>
		<!--导航结束-->
		
		<!--搜索框开始-->
		<div class="search">
			<div class="warp">
				<img src="../img/logo_top.png" />
				<div class="search_div">
					<input type="text" class="search_text">
					 <input type="button" value="搜索"  class="search_but"/>
					
				</div>
			</div>
		</div>
		<!--搜索框结束-->
		
		<!--标题开始	-->
		<div class="title warp">
			<h3>全部商品</h3>
			
			<div >
				<span id="">配送至</span>
				<select >
					<option >通川区</option>
					<option >渠县</option>
					<option >宣汉县</option>
					<option >大竹县</option>
				</select>
			</div>
		</div>
		
		<!--标题结束-->
		
		<!--显示菜单的开始 -->
		<!--warp令内容居中显示-->
		<div class="tips warp">
			<ui>
				<li>
					<input type="checkbox" name="fav" id="all" οnclick="checkTest1(this),checkTest2()"/>全选</li>
				<li>商品</li>
				<li>单价</li>
				<li>数量</li>
				<li>小计</li>
				<li>操作</li>
			</ui>
		</div>
		<!--显示菜单的结束-->
		
		<!--商品详情展示开始-->
		 <div class="info warp">
		  	
		  	  <ul>
		  	  	<li class="info_1"><input type="checkbox" name="fav" οnclick="checkTest2()" /> </li>
		  	  	<li class="info_2"> <img src="../img/phone.jpg" width="80px"/> </li>
		  	  	<li class="info_3"><a>小米10青春版 6GB+128GB 蓝莓薄荷</a></li>
		  	  	<li class="info_4"><a>颜色:灰色+粉红</a> </li>
		  	  	<li class="info_5">1882.5</li>
		  	  	<li class="info_6">
		  	  		<button οnclick="checkTest3(this,1),checkTest2()" >-</button>
		  	  		<input type="text" name="" id="" value="1" />
		  	  		<button class="bot" οnclick="checkTest3(this,2),checkTest2()" >+</button>
		  	  		
		  	  	</li>
		  	  	<li class="info_7">¥1882.5</li>
		  	  	<li>
		  	  	<!--通过href触发后面的JS代码,通过点击自身-->
		  	  		<a href="javascript:void(0)" οnclick="checkTest4(this),checkTest2()" >删除</a><br />
		  	  		<a>已到我的关注</a>
		  	  	</li>
		  	  </ul>
		  	
		  </div>
		  
		  <div class="info warp">
		  	
		  	  <ul>
		  	  	<li class="info_1"><input type="checkbox" name="fav" οnclick="checkTest2()" /> </li>
		  	  	<li class="info_2"> <img src="../img/img2.jpg" width="80px"/> </li>
		  	  	<li class="info_3"><a>ProArt G15 星空灰 9代i7 15.6英寸 RTX 2060 设计师笔记本电脑</a></li>
		  	  	<li class="info_4"><a>颜色:白色/黑色</a> </li>
		  	  	<li class="info_5">13800</li>
		  	  	<li class="info_6">
		  	  		<button οnclick="checkTest3(this,1),checkTest2()">-</button>
		  	  		<input type="text" name="" id="" value="1" />
		  	  		<button class="bot" οnclick="checkTest3(this,2),checkTest2()">+</button>
		  	  		
		  	  	</li>
		  	  	<li class="info_7">¥13800</li>
		  	  	<li>
		  	  		<!--删除完毕,再进行一次判断-->
		  	  		<a href="javascript:void(0)" οnclick="checkTest4(this),checkTest2()" >删除</a><br />
		  	  		<a>已到我的关注</a>
		  	  	</li>
		  	  </ul>
		  	
		  </div>
		  
		  <div class="info warp">
		  	
		  	  <ul>
		  	  	<li class="info_1"><input type="checkbox" name="fav" οnclick="checkTest2()" /> </li>
		  	  	<li class="info_2"> <img src="../img/data-line.jpg" width="80px"/> </li>
		  	  	<li class="info_3"><a>小米超长数据线</a></li>
		  	  	<li class="info_4"><a>颜色:白色</a> </li>
		  	  	<li class="info_5">50</li>
		  	  	<li class="info_6">
		  	  		<button οnclick="checkTest3(this,1),checkTest2()">-</button>
		  	  		<input type="text" name="" id="" value="1" />
		  	  		<button class="bot" οnclick="checkTest3(this,2),checkTest2()">+</button>
		  	  		
		  	  	</li>
		  	  	<li class="info_7">¥50</li>
		  	  	<li>
		  	  		<a href="javascript:void(0)" οnclick="checkTest4(this),checkTest2()" >删除</a><br />
		  	  		<a>已到我的关注</a>
		  	  	</li>
		  	  </ul>
		  	
		  </div>
		<!--商品详情展示结束-->
		
		<!--结算窗口开始-->
			<div class="balance warp">
				<ul class="balance_ul1">
				<li><input type="checkbox" name="fav" οnclick="checkTest1(this),checkTest2()" />全选</li>
				<li>删除选中商品</li>
				<li>移到我的关注</li>
				<li>清除下柜商品</li>
			</ul>
			
			<ul class="balance_ul2">
				<li>已经选择<span id="snum">0</span>件商品</li>
				<li>总价<span id="zongz">¥0</span></li>
				<li class="butt">去结算</li>
			</ul>
			</div>
		<!--结算窗口结束-->
	<div class="footer">
		<iframe src="footer.html"  frameborder="0" id="footer"></iframe>
		</div>
	</body>
</html>

``shopping.js

```css
//获得所有多选框的对象
	var fav=document.getElementsByName("fav");

//判断是否是全选操作
function checkTest1(th){

	//判断选项是否被勾选
	var flag=th.checked;
	//alert(flag);
	
	
	//通过forech的方法遍历名为fav的有序列表
	for (var i in fav) {
		fav[i].checked=flag;
	}
}

//单选决定全选操作
function checkTest2(){
	
	var flag=true;
	
	/*遍历出去第一个和最后一个fav,后来再处理*/
	for (var i=1;i<fav.length-1;i++) {
		if (!fav[i].checked) {
			flag=false;
			break;
		}
	}
	/*决定是否被勾选,fav[0]代表第一个全选框,fav[1]代表第二个多选框*/
	fav[0].checked=flag;
	fav[fav.length-1].checked=flag;
	//alert(flag);
	
	
	
	//商品的总价格
	var zong=0;
	//统计被勾选对象的数量
	var num=0;
	//统计商品数量
	var spNum=0;
	
	//价格是否统计,遍历第2、3、4个fav
	for (var i=1;i<fav.length-1;i++) {
		//如果被勾选
		if (fav[i].checked) {
			num++;
			
			//获得ul父节点
			var par =fav[i].parentNode.parentNode;
			//获得指定ul下的所有li
			var li= par.getElementsByTagName("li");
			
			//单个商品的总价格:将得到的数据通过¥分开,并取第二个元素
			var z=li[6].innerText.split("¥")[1];
			//获得所有商品的总结格
			zong+=Number(z);
			document.getElementById("zongz").innerText=zong;
			
			//获得商品的数量
			var z2=li[5].getElementsByTagName("input");
			var num2=z2[0].value;
			spNum+=Number(num2);
			//获得商品数量统计对象
			document.getElementById("snum").innerText=spNum;
		}
	}
	if(num==0){
	 	document.getElementById("zongz").innerText=0;	
	 	document.getElementById("snum").innerText=0;
	}
	
}

/*控制数量的增加或减少,注意括号问题*/
function checkTest3(th,sig){
	//就是th,即this传的值
	var pre;
	if (sig=="1") {
		//获得下一个节点对象
		pre=th.nextElementSibling;
		if (Number(pre.value)>0) {
			//获得节点的value的值
			pre.value=Number(pre.value)-1;
		  }
		}else{
			//获得上个节点的对象
			pre=th.previousElementSibling;
			//获得下一个节点对象
			pre.value=Number(pre.value)+1;
		}
		
		
		//计算每个商品的价格
		//获取当前节点的父节点的上一个节点的内容,即每个商品的单价nnerText\innerHTML都可以
		var val=pre.parentNode.previousElementSibling.innerText;
		//计算总价格
		var zong=Number(val)*Number(pre.value);
		//把总价赋值给指定对象
		pre.parentNode.nextElementSibling.innerText="¥"+zong;
}


//删除指定节点
function checkTest4(th){
	//获得父节点div(<a>的父节点(li)的父节点(ul)的父节点div)
	var div=th.parentNode.parentNode.parentNode;
	div.remove();
	
}

通过判断语句和遍历语句分别来对应相应的功能,再通过JS控制相应的事件
在这里插入图片描述

  • 0
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值