jQuery利用DOM遍历实现商城结算系统实战
短信预约 -IT技能 免费直播动态提醒
效果图
一.body
<body>
<div style="background-color: antiquewhite;width: 500px;height: 450px;border: 1px solid aquamarine;border-radius: 20px;">
<table>
<thead align="center">
<p style="text-align: center;"><span style="font-size: 30px;color:mediumslateblue;border: 2px solid red;border-radius: 10px;background-color:navajowhite;">结算中心</span></p>
<tr class="tr1">
<th style="position: absolute;"><input type="checkbox" id="cballS">全选</th>
<th style="position: absolute;left: 100px;">商品</th>
<th style="position: absolute;left: 190px;">单价</th>
<th style="position: absolute;left: 290px;">数量</th>
<th style="position: absolute;left: 370px;"><input type="hidden" value="0" />小计</th>
<th style="position: absolute;left: 450px;">操作</th>
</tr>
<!--//作为换行使用-->
<tr>
<td ><p> </p></td>
</tr>
</thead>
<tbody>
<tr>
<td class="cbAll"><input type="checkbox" id="cball" onclick="chClick()">选中</td>
<td style="position: absolute;left: 100px;">vivoX86</td>
<td style="position: absolute;left: 190px;">1299.99</td>
<td style="position: absolute;left: 260px;">
<input type="button" value="-" style="background-color: aqua;border-radius: 10px;"/>
<input type="text" value="0" style="width: 20px;text-align: center;border-radius: 10px;background-color: gold;" />
<input type="button" value="+" style="background-color: blueviolet;border-radius: 10px;"/>
</td>
<td style="position: absolute;left: 370px;border: 1px solid chartreuse;border-radius: 10px;background-color: salmon;width: 60px;text-align: center;">0</td>
<td style="position: absolute;left: 450px;"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="del(this)" >删除</a></td>
</tr>
<!--//作为换行使用-->
<tr>
<td ><p> </p></td>
</tr>
<tr class="tr1">
<td class="cbAll"><input type="checkbox" id="cball" onclick="chClick()">选中</td>
<td style="position: absolute;left: 100px;">oppoS23</td>
<td style="position: absolute;left: 190px;">1399.99</td>
<td style="position: absolute;left: 260px;">
<input type="button" value="-" style="background-color: aqua;border-radius: 10px;"/>
<input type="text" value="0" style="width: 20px;text-align: center;border-radius: 10px;background-color: gold;"/>
<input type="button" value="+" style="background-color: blueviolet;border-radius: 10px;"/>
</td>
<td style="position: absolute;left: 370px;border: 1px solid chartreuse;border-radius: 10px;background-color: salmon;width: 60px;text-align: center;">0</td>
<td style="position: absolute;left: 450px;"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="del(this)">删除</a></td>
</tr>
<!--//作为换行使用-->
<tr>
<td ><p> </p></td>
</tr>
<tr>
<td class="cbAll"><input type="checkbox" id="cball" onclick="chClick()">选中</td>
<td style="position: absolute;left: 100px;">HUAWEIS7</td>
<td style="position: absolute;left: 190px;">1499.99</td>
<td style="position: absolute;left: 260px;">
<input type="button" value="-" style="background-color: aqua;border-radius: 10px;"/>
<input type="text" value="0" style="width: 20px;text-align: center;border-radius: 10px;background-color: gold;"/>
<input type="button" value="+" style="background-color: blueviolet;border-radius: 10px;"/>
</td>
<td style="position: absolute;left: 370px;border: 1px solid chartreuse;border-radius: 10px;background-color: salmon;width: 60px;text-align: center;">0</td>
<td style="position: absolute;left: 450px;"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="del(this)">删除</a></td>
</tr>
<!--//作为换行使用-->
<tr>
<td ><p> </p></td>
</tr>
<tr>
<td class="cbAll"><input type="checkbox" id="cball" onclick="chClick()">选中</td>
<td style="position: absolute;left: 100px;">Mi 8s</td>
<td style="position: absolute;left: 190px;">1599.99</td>
<td style="position: absolute;left: 260px;">
<input type="button" value="-" style="background-color: aqua;border-radius: 10px;"/>
<input type="text" value="0" style="width: 20px;text-align: center;border-radius: 10px;background-color: gold;"/>
<input type="button" value="+" style="background-color: blueviolet;border-radius: 10px;"/>
</td>
<td style="position: absolute;left: 370px;border: 1px solid chartreuse;border-radius: 10px;background-color: salmon;width: 60px;text-align: center;">0</td>
<td style="position: absolute;left: 450px;"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="del(this)">删除</a></td>
</tr>
<!--//作为换行使用-->
<tr>
<td ><p> </p></td>
</tr>
<tr>
<td class="cbAll"><input type="checkbox" id="cball" onclick="chClick()">选中</td>
<td style="position: absolute;left: 100px;">iPhone13</td>
<td style="position: absolute;left: 190px;">1699.99</td>
<td style="position: absolute;left: 260px;">
<input type="button" value="-" style="background-color: aqua;border-radius: 10px;"/>
<input type="text" value="0" style="width: 20px;text-align: center;border-radius: 10px;background-color: gold;"/>
<input type="button" value="+" style="background-color: blueviolet;border-radius: 10px;"/>
</td>
<td style="position: absolute;left: 370px;border: 1px solid chartreuse;border-radius: 10px;background-color: salmon;width: 60px;text-align: center;">0</td>
<td style="position: absolute;left: 450px;"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="del(this)">删除</a></td>
</tr>
</tbody>
<tfoot>
<!--//作为换行使用-->
<tr>
<td ><p> </p></td>
</tr>
<tr>
<th><span style="background-color:aqua;border:1px solid darkblue;border-radius: 5px;display:inline-block;width: 80px;">总金额</span> : <span id="moneys" style="display:inline-block;width: 100px;background-color: seagreen;border-radius: 10px;">0</span>元</th>
<th> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >结算</a></th>
</tr>
</tfoot>
</table>
</div>
</body>
二.css
<style>
.cbAll{
border: 1px solid darkblue;
background-color: darkgoldenrod;
border-radius: 10px;
position:absolute;
}
</style>
三.JavaScript
<script type="text/javascript" class="lazy" data-src="js/jquery.min.js" ></script>
<script>
$(function(){
$("[type=button]").click(function(){
//获取按钮
var btn=$(this).val();
//获取父元素再获取父元素的上一个同胞元素
var Fu=parseFloat($(this).parent().prev().html());
//获取父元素后获取父元素下一个同胞元素
//var FuX=parseFloat($(this).parent().next().html());
if(btn=="+"){
//获取数量
var preVa=parseInt($(this).prev().val());
//给数量加1
$(this).prev().val(preVa+1)
//获取并赋值数量
preVa=parseInt($(this).prev().val());
//给父元素下一个同胞元素赋值,并保留小数点后两位
var ptsum=(Fu*preVa).toString();
var newSum="";
for(i=0;i<ptsum.length;i++){
if(ptsum[i]=="."){
if(ptsum[i+1]!=undefined){
newSum+=ptsum[i]+ptsum[i+1];
}
if(ptsum[i+2]!=undefined){
newSum+=ptsum[i+2];
}
break;
}
newSum+=ptsum[i];
};
$(this).parent().next().html(newSum);
Smon();
}else{
//获取数量
var preVa=parseInt($(this).next().val());
if(preVa==0){
return alert("不能再少了!");
}
//给数量减一
$(this).next().val(preVa-1);
//获取并赋值元素
preVa=parseInt($(this).next().val());
//给父元素下一个同胞元素赋值,并保留小数点后两位
var ptsum=(preVa*Fu).toString();
var newSum="";
for(i=0;i<ptsum.length;i++){
if(ptsum[i]=="."){
if(ptsum[i+1]!=undefined){
newSum+=ptsum[i]+ptsum[i+1];
}
if(ptsum[i+2]!=undefined){
newSum+=ptsum[i+2];
}
break;
}
newSum+=ptsum[i];
}
$(this).parent().next().html(newSum);
Smon();
};
});
//全选按钮
$("#cballS").click(function(){
var flag=$(this).prop("checked");
$("[type=checkbox]").each(function(){
$(this).prop("checked",flag);
});
Smon()
});
//输入框发生变化刷新小计
$("[type='text']").change(function(){
//获取元素内容
var ptNum=parseFloat($(this).val());
if(ptNum<=0 || isNaN(ptNum)){
$(this).val(0);
return false;
};
var n1=ptNum.toString();
for(i=0;i<n1.length;i++){
//不能为小数或者不能大于100
if(n1[i]=="." || i==2){
$(this).val(0);
return false;
};
};
//获取单价
var ptDj=parseFloat($(this).parent().prev().html());
//获取总额
var ptSum=(ptNum*ptDj).toString();
var newSum="";
//保留小数点后两位
for(i=0;i<ptSum.length;i++){
if(ptSum[i]=="."){
if(!isNaN(ptSum[i+1])){
newSum+=ptSum[i]+ptSum[i+1];
if(!isNaN(ptSum[i+2])){
newSum+=ptSum[i+2];
};
break;
};
};
newSum+=ptSum[i];
}
//设置小计
$(this).parent().next().html(newSum);
Smon();
});
});
//计算总金额
function Smon(){
var sum=0;
//循环遍历所有选中按钮后边的值
$("[type=checkbox]:checked").each(function(){
//获取选中按钮同级的小计
var xiaoji=parseFloat($(this).parent().next().next().next().next().html());
//判断是否是第一行的,isNaN判断是否可以转数值
if(isNaN(xiaoji)){
xiaoji=0;
}
sum+=xiaoji;
});
sum=parseFloat(sum).toString();
var newSum="";
//总计金额默认保存小数点后两位,循环拼接并赋值给新的变量
for(i=0;i<sum.length;i++){
if(i<=7){
if(sum[i]=="."){
if(sum[i+1]!=undefined){
newSum+=sum[i]+sum[i+1];
}
if(sum[i+2]!=undefined){
newSum+=sum[i+2];
}
break;
}
newSum+=sum[i];
}
}
//赋值
$("#moneys").html(newSum);
};
//选中按钮判断
function chClick(){
//获取全选按钮
var len=$("#cballS").prop("checked");
//获取所有可选择的按钮为true的长度
var len2=$("[type=checkbox]:checked").length;
//获取所有可选中按钮的长度
var len3=$("[type=checkbox]").length;
//由于函数执行是按照自上而下,调用一次执行一次的方式,所以当第一次判断选中按钮为5个时,就去勾选全选按钮,
//当以后每次判断再进来时,只会有两种结果,一个全选是true,一个全选是false,只需要判断全选是什么状态就将状态改变另一个即可。
if(len2==len3-1 & len==false){
$("#cballS").prop("checked",true);
}else if(len2>=len3-1 & len==true){
$("#cballS").prop("checked",false);
};
//执行完调用总计函数
Smon();
};
//删除,使用函数调用完成
function del(th){
var aa=$(th).parent().parent().next().remove();
$(th).parent().parent().remove();
Smon();
};
</script>
四.小结
本章使用所学jQueryDOM遍历实现了一个实用简易小商城结算系统,实现方式不只这一种,各位感兴趣的小伙伴,可以自行探索.
到此这篇关于jQuery利用DOM遍历实现商城结算系统实战的文章就介绍到这了,更多相关jQuery DOM遍历 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341