京东购物车(动态)网页搭建,利用JavaScript实现

时间:2022-07-22
本文章向大家介绍京东购物车(动态)网页搭建,利用JavaScript实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

需要实现的功能:

单选操作、全选操作、单行删除操作、多行删除操作、价格结算

使用的方式

JavaScript

项目环境

win10+Hbuilder+chrome浏览器

项目结构

项目效果

实现了所有功能的主界面

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>进行价格计算</title>
		
		<link rel="stylesheet" type="text/css" href="css/jd.css"/>
		<link rel="stylesheet" type="text/css" href="css/reset.css"/>
		<link rel="stylesheet" type="text/css" href="icon/iconfont.css"/>
		
			
		<!--使用JS别忘记将其引入-->
		<script src="js/jd.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="">我的京东</a><span>|</span></li>
		  	 	  	<li><a href="">京东会员</a><span>|</span></li>
		  	 	  	<li><a href="">企业采购</a><span>|</span></li>
		  	 	  	<li><a href="">京东手机</a><span>|</span></li>
		  	 	  	<li><a href="">关注京东</a><span>|</span></li>
		  	 	  	<li><a href="">客户服务</a><span>|</span></li>
		  	 	  	<li><a href="">网站导航</a></li>
		  	 	  </ul>
			</div>
			
		</div>
		<!--导航结束-->
		
		<!--搜索框开始-->
		<div class="search">
			<div class="warp">
				<img src="img/logo.jpg" />
				
				<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" "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" "checkTest2()" /> </li>
		  	  	<li class="info_2"> <img src="img/img1.jpg" width="80px"/> </li>
		  	  	<li class="info_3"><a>【京东超市】desha春秋季儿童休闲服</a></li>
		  	  	<li class="info_4"><a>颜色:灰色+粉红</a> </li>
		  	  	<li class="info_5">182.5</li>
		  	  	<li class="info_6">
		  	  		<button "checkTest3(this,1),checkTest2()" >-</button>
		  	  		<input type="text" name="" id="" value="1" />
		  	  		<button class="bot" "checkTest3(this,2),checkTest2()" >+</button>
		  	  		
		  	  	</li>
		  	  	<li class="info_7">¥182.5</li>
		  	  	<li>
		  	  	<!--通过href触发后面的JS代码,通过点击自身-->
		  	  		<a href="javascript:void(0)" "checkTest4(this),checkTest2()" >删除</a><br />
		  	  		<a>已到我的关注</a>
		  	  	</li>
		  	  </ul>
		  	
		  </div>
		  
		  <div class="info warp">
		  	
		  	  <ul>
		  	  	<li class="info_1"><input type="checkbox" name="fav" "checkTest2()" /> </li>
		  	  	<li class="info_2"> <img src="img/img2.jpg" width="80px"/> </li>
		  	  	<li class="info_3"><a>【京东超市】desha春秋季儿童休闲服</a></li>
		  	  	<li class="info_4"><a>颜色:灰色+粉红</a> </li>
		  	  	<li class="info_5">182.5</li>
		  	  	<li class="info_6">
		  	  		<button "checkTest3(this,1),checkTest2()">-</button>
		  	  		<input type="text" name="" id="" value="1" />
		  	  		<button class="bot" "checkTest3(this,2),checkTest2()">+</button>
		  	  		
		  	  	</li>
		  	  	<li class="info_7">¥182.5</li>
		  	  	<li>
		  	  		<!--删除完毕,再进行一次判断-->
		  	  		<a href="javascript:void(0)" "checkTest4(this),checkTest2()" >删除</a><br />
		  	  		<a>已到我的关注</a>
		  	  	</li>
		  	  </ul>
		  	
		  </div>
		  
		  <div class="info warp">
		  	
		  	  <ul>
		  	  	<li class="info_1"><input type="checkbox" name="fav" "checkTest2()" /> </li>
		  	  	<li class="info_2"> <img src="img/img3.jpg" width="80px"/> </li>
		  	  	<li class="info_3"><a>【京东超市】desha春秋季儿童休闲服</a></li>
		  	  	<li class="info_4"><a>颜色:灰色+粉红</a> </li>
		  	  	<li class="info_5">182.5</li>
		  	  	<li class="info_6">
		  	  		<button "checkTest3(this,1),checkTest2()">-</button>
		  	  		<input type="text" name="" id="" value="1" />
		  	  		<button class="bot" "checkTest3(this,2),checkTest2()">+</button>
		  	  		
		  	  	</li>
		  	  	<li class="info_7">¥182.5</li>
		  	  	<li>
		  	  		<a href="javascript:void(0)" "checkTest4(this),checkTest2()" >删除</a><br />
		  	  		<a>已到我的关注</a>
		  	  	</li>
		  	  </ul>
		  	
		  </div>
		<!--商品详情展示结束-->
		
		<!--结算窗口开始-->
			<div class="balance warp">
				<ul class="balance_ul1">
				<li><input type="checkbox" name="fav" "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>
		<!--结算窗口结束-->
	</body>
</html>

实现动态交互的JS代码

//获得所有多选框的对象
	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;
		}
		
		
		//计算每个商品的价格
		//获取当前节点的父节点的上一个节点的内容,即每个商品的单价nnerTextinnerHTML都可以
		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();
	
}

相关css文件

jd.css

/*导航栏开始*/
.nav{
	width:1920px ;
	height:30px;
	background-color: #f1f1f1;
}
.warp{
	width: 1000px;
	margin: 0px auto;
}
.nav_ul1,.nav_ul2 li{
	float: left;
}
.nav_ul1 li{
	float: left;
	line-height: 30px;
	margin-right: 20px;
}

.nav_ul1 a,.nav_ul2 a,.nav_ul2 span{	
	font-size: 12px;
	color: gray;
	
}

.nav_ul2{
	float: right;
}

.nav_ul2 li,.nav_ul2 span{
	line-height: 30px;
	margin-left: 15px;
	
}
.nav a:hover{	
	color: red;
}
/*导航栏结束*/


/*搜索框开始*/
.search{
	margin: 20px;
}

.search img{
	/*清除之前冲突样式  重点*/
	clear: both;
	float: left;
}

.search_div{
	float: right;
	margin-top: 20px;
}

.search_text{
	width: 265px;
	height: 21px;
	border: 3px solid #C91623;
	
	position: relative;
	left: 4px;
	top: -1px;
}	

.search_but{
	width: 51px;
	height: 29px;
	background-color: #C91623;
	border: 0px;
	color: #FFFFFF;
}

/*搜索框结束*/

/*标题开始*/
.title{
	margin-top: 130px;
}

.title h3{
	float: left;
	font-size: 23px;
	color: #C91623;
}

.title div{
	float: right;
	font-size: 14px;
	color: gray;
}
/*标题结束*/

/*显示菜单的开始*/
.tips{
	width: 1000px;
	height: 50px;
	background-color: #F1F1F1;
	margin-top: 165px;
	
	border: 1px solid #E9E9E9;
}

.tips li{
	float: left;
	
	line-height: 50px;
	font-size: 12px;
	color: gray;
}
/*border-top:加上边框加*/
.tips li:nth-child(1){width:90px; border-top: 3px solid #c91623; }

.tips li:nth-child(2){margin-left: 80px; }

.tips li:nth-child(3){margin-left: 430px; }

.tips li:nth-child(4){margin-left: 70px; }

.tips li:nth-child(5){margin-left: 110px; }

.tips li:nth-child(6){margin-left: 50px; }
/*显示菜单的结束*/


/*商品详情展示开始*/
.info{
	 width: 1000px; 
	 height: 125px;
	 background-color: #fff4e8;

	 border: 1px  solid gray; 
	 margin-top: 30px;
	 /*上边框,对原来边框的约定进行覆盖*/
 	 border-top: 3px solid  gray;
}

.info li{
	  float:  left;	
	  margin-top: 20px;
}

.info a{
	font-size: 12px;
	color: #333333;
}

.info_2{
	margin-left: 15px;
	border: 1px  solid gray;
}

.info_3{ 
	  width: 270px; 
	  height: 20px;
}

.info_4{
	 margin-left: 45px;
	
}

.info_5{
	margin-left: 70px;
	
}

.info_6{
	 margin-left: 40px;
}

.info_6 input{	
	width: 30px;
	height: 12px;
	text-align: center;
	
	position: relative;
	top: -2px;
	left: -5px;
	
}

.info_6 button{	
	 width: 30px; 
	 height: 18px;
}

.bot{
	 position: relative;
	left: -10px;
}

.info_7{
	
	 margin-left: 40px;
}
/*商品详情展示结束*/

/*结算窗口开始*/
.balance{
	width: 1000px;
	height: 50px;
	
	border: 1px solid gray;
	margin-top: 30px;
}

.balance_ul1 li,.balance_ul2 li{
	float: left;
	line-height: 50px;
	margin-left: 14px;
}

.balance_ul2{
	float: right;

}

.butt{

	width: 110px;
	height: 50px;
	background-color: #C91623;
	
	border: 0px;
	font-size: 20px;
	font-weight: bold;
	color: #FFFFFF;
}

.balance_ul2 span{
	font-size:20px ;
	font-weight: bold;
	color: #C91623;
}
/*结算窗口结束*/

reset.css 统一控制页面格式的css

body,div,h1,h2,h3,h4,h5,h6,li,ol,ul{margin: 0px; padding: 0px;}
body{text-align: center;font-size:14px;}
a{text-decoration: none;}
li{list-style: none;}

源代码已分享至本人云盘~~~ 链接:https://pan.baidu.com/s/1ul_DbL2KVdETTc6himvfUA 提取码:7wbw