js实现简单购物车模块

本文实例为大家分享了js实现简单购物车模块的具体代码,供大家参考,具体内容如下

主要功能

  • 输入框正则判断,两位数小数,开头可以为0
  • 如果商品名字相同,自动数量+1,如果名字相同,价格不同,以最新价格为准(有bug,多个商品无法操作。程序混乱,随后在改)
  • 选住商品,或添加减少数量,都会自动更新右下角的价格和数量
  • 结算过的商品自动消失

源码:

1.html

<body>

<div id="head" align="center">

<form>

<span class="font1">名称:</span><input type="text" id="name">

<span class="font1">单价:</span><input type="text" id="price">

<input id="add1" type="button" value="添加">

<input id="pay1" type="button" value="结算">

<input id="set1" type="reset" value="重置">

</form>

</div>

<div>

<table border="1" id="t" >

<thead>

<tr align="center">

<td><input type="checkbox" style='cursor: pointer'></td>

<td>商品名称</td>

<td>价格</td>

<td>数量</td>

<td>操作</td>

</tr>

</thead>

<tbody>

</tbody>

</table>

</div>

<div align="right" id="b">

<span>总价:</span>

<span id="Total" style="color: red">0</span>&nbsp;

<span>商品数量:</span>

<span id="TotalNum" style="color: red">0</span>

</div>

</body>

2.css

<style>

body{

background-color: coral;

}

#head{

margin:30px auto 10px auto;

}

#name,#price{

background-color: aquamarine;

}

#add1,#pay1,#set1{

color: red;

font-weight: bold;

background-color: gold;

cursor: pointer;

}

.font1{

font-weight: bold;

font-size: large;

}

#t,#b{

border-collapse: collapse;

margin: 30px auto;

width: 600px;

}

#t thead{

border: 3px solid gold;

color: white;

background-color: blue;

}

#t tbody{

color: #1414bf;

background-color: white;

}

</style>

js部分

<script src="../lib/jquery-3.3.1.js"></script>

<script>

//初始化按钮

function initButton(){

$("input[name=j1]").off();

$("input[name=x1]").off();

//添加数量按钮

$("input[name=j1]").on("click", function (){

var num = parseInt($(this).prev().val());

if (num > 1){

$(this).prev().prev().attr("disabled",false);

}

if (num > 9){

$(this).attr("disabled","disabled");

return;

}

num++;

if (num > 1){

$(this).prev().prev().attr("disabled",false);

}

if (num > 9){

$(this).attr("disabled","disabled");

}

$(this).prev().val(num);

$("#Total").text(cal());

$("#TotalNum").text(calNum());

}

)

//减少数量按钮

$($("input[name=x1]")).click(function (){

var num = parseInt($(this).next().val());

if (num-1 < 10){

$("#add1").prop("disabled",false);

}

num--;

if (num < 10){

$(this).next().next().prop("disabled",false);

}

if (num == 1){

$(this).prop("disabled","disabled");

}

$(this).next().val(num);

$("#Total").text(cal());

$("#TotalNum").text(calNum());

});

}

//初始化删除

function initdelete(){

$(".delete").on("click",function (){

$(this).parent().parent().remove();

$("#Total").text(cal());

$("#TotalNum").text(calNum());

});

}

//全选或全不选功能

$("thead input[type=checkbox]").on("click",function (){

$("tbody input[type=checkbox]").each(function (index,element){

$(this).prop("checked",$("thead input[type=checkbox]").prop("checked"));

$("#Total").text(cal());

$("#TotalNum").text(calNum());

});

})

//初始化每个选框选中的方法

function initCheckBox(){

$("tbody input[type=checkbox]").off();

$("tbody input[type=checkbox]").on("change",function (){

$("#Total").text(cal());

$("#TotalNum").text(calNum());

});

}

//计算总价

function cal(){

var price = null;

$("tbody input[type=checkbox]:checked").each(function (){

var priceByOne = parseFloat($(this).parent().next().next().text());

var num = parseFloat($(this).parent().next().next().next().find("input[name='num']").val());

var totalMoneyByone = priceByOne * num;

price+= totalMoneyByone ;

});

return price;

}

//计算总的数量

function calNum(){

var totalNum = null;

$("tbody input[type=checkbox]:checked").each(function (){

var num = parseInt($(this).parent().next().next().next().find("input[name='num']").val());

totalNum+=num;

});

return totalNum;

}

//结算

$("#pay1").on("click",function (){

alert("一共消费:"+cal());

$("thead input[type=checkbox]:checked").prop("checked",false);

$("tbody input[type=checkbox]:checked").parent().parent().remove();

});

//添加

$("#add1").on("click",function (){

var name = $("#name").val();

var price = $("#price").val();

var priceZ = /(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/

if ((name == "" || price == "") ||(!priceZ.test(price)) ){

alert("输入错误!");

}else {

var GameArr = [];

var flag = false;

var repeat = null;

//得到名字数组

$("tbody").each(function (){

var finds = $(this).find(".goodsName");

for (let i = 0; i < finds.length; i++) {

GameArr.push(finds.eq(i).text());

}

});

for (let i = 0; i < GameArr.length; i++) {

if (name == GameArr[i]){

repeat = i;

flag = true;

break;

}}

//如果有相同名字,改数量和价格

if (flag == true){

var totalNum = parseInt($("tbody:eq(" + repeat + ")").find("input[name='num']").val())+1;

if (totalNum > 9){

$(this).attr("disabled","disabled");

}

$("tbody:eq(" + repeat + ")").find("input[name='num']").val(totalNum);

$("tbody:eq(" + repeat + ")").find(".goodsPrice").text(price);

//否则拼接表格

}else {

var goods = "<tr>"+

"<td><input type='checkbox' style='cursor: pointer'></td>"+

"<td class='goodsName'>"+name+"</td>"+

"<td class='goodsPrice'>"+price+"</td>"+

"<td>"+

"<input type='button' value='-' name='x1' style='cursor: pointer'>&nbsp;"+

"<input type='text' value='1' name='num'>&nbsp;"+

"<input type='button' value='+' name='j1' style='cursor: pointer'>"

+"</td>"+

'<td><a href="" class=" rel="external nofollow" delete" style="color:red">删除</a></td>' +

"</tr>"

$("tbody").append(goods);

//每次添加完,绑定事件

initButton();

initdelete();

initCheckBox();

}}

});

</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是 js实现简单购物车模块 的全部内容, 来源链接: utcz.com/p/220153.html

回到顶部