需要实现的功能:
单选操作、全选操作、单行删除操作、多行删除操作、价格结算
使用的方式
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"></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" onclick="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" onclick="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 onclick="checkTest3(this,1),checkTest2()" >-</button>
<input type="text" name="" id="" value="1" />
<button class="bot" onclick="checkTest3(this,2),checkTest2()" >+</button>
</li>
<li class="info_7">¥182.5</li>
<li>
<!--通过href触发后面的JS代码,通过点击自身-->
<a href="javascript:void(0)" onclick="checkTest4(this),checkTest2()" >删除</a><br />
<a>已到我的关注</a>
</li>
</ul>
</div>
<div class="info warp">
<ul>
<li class="info_1"><input type="checkbox" name="fav" onclick="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 onclick="checkTest3(this,1),checkTest2()">-</button>
<input type="text" name="" id="" value="1" />
<button class="bot" onclick="checkTest3(this,2),checkTest2()">+</button>
</li>
<li class="info_7">¥182.5</li>
<li>
<!--删除完毕,再进行一次判断-->
<a href="javascript:void(0)" onclick="checkTest4(this),checkTest2()" >删除</a><br />
<a>已到我的关注</a>
</li>
</ul>
</div>
<div class="info warp">
<ul>
<li class="info_1"><input type="checkbox" name="fav" onclick="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 onclick="checkTest3(this,1),checkTest2()">-</button>
<input type="text" name="" id="" value="1" />
<button class="bot" onclick="checkTest3(this,2),checkTest2()">+</button>
</li>
<li class="info_7">¥182.5</li>
<li>
<a href="javascript:void(0)" onclick="checkTest4(this),checkTest2()" >删除</a><br />
<a>已到我的关注</a>
</li>
</ul>
</div>
<!--商品详情展示结束-->
<!--结算窗口开始-->
<div class="balance warp">
<ul class="balance_ul1">
<li><input type="checkbox" name="fav" onclick="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;
}
//计算每个商品的价格
//获取当前节点的父节点的上一个节点的内容,即每个商品的单价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();
}
相关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
复制这段内容后打开百度网盘手机App,操作更方便哦