用原生JavaScript做一个简单的购物车
前言:
本文由简易HTML+CSS+JavaScript构成,本文图片可自己修改。
(img内容不上传)
实现功能:
将商品添加到购物车(如果购物车有相同物品则累加对应数量)小计计算与总和积分计算与总和实现数量的增加和减少(并同步小计和积分及其总和)单个商品删除批量删除
实现效果:
HTML部分:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div>
<div id="shop">
<ul>
<li>
<a href="#" onclick="addToCart(this);">
<img src="img/a.jpg" height="100" width="100"/><br />
<span class="price">4999.00
</span>¥
<br />
添加至购物车
</a>
</li>
<li>
<a href="#" onclick="addToCart(this);">
<img src="img/b.jpg" height="100" width="100"/><br />
<span class="price">1999.00
</span>¥
<br />
添加至购物车
</a>
</li>
<li>
<a href="#" onclick="addToCart(this);">
<img src="img/c.jpg" height="100" width="100"/><br />
<span class="price">3999.00
</span>¥
<br />
添加至购物车
</a>
</li>
<li>
<a href="#" onclick="addToCart(this);">
<img src="img/d.jpg" height="100" width="100"/><br />
<span class="price">999.00
</span>¥
<br />
添加至购物车
</a>
</li>
<li>
<a href="#" onclick="addToCart(this);">
<img src="img/e.jpg" height="100" width="100"/><br />
<span class="price">5666.00
</span>¥
<br />
添加至购物车
</a>
</li>
</ul>
</div>
<div id="info-table">
<h1>购物车
</h1>
<table id="mytable" width="1200" align="center">
<tr>
<th><input type="checkbox" id="allCheck" onclick="selectAll()"/>全选
</th>
<th>店铺宝贝
</th>
<th>获积分
</th>
<th>单价(元)
</th>
<th>数量
</th>
<th>小计(元)
</th>
<th>操作
</th>
</tr>
<tr>
<td><input type="checkbox" class="selectOne" /></td>
<td class="imgbackground"><img src="img/a.jpg" height="100" width="100"/></td>
<td class="integral">249
</td>
<td>4999.00
</td>
<td>
<button onclick="reduce(this)">-
</button>
<input type="text" size="1" readonly="true" value="1"/>
<button onclick="plus(this)">+
</button>
</td>
<td class="shopCount">0
</td>
<td><a href="#" class="delete" onclick="deleteChild(this)">删除
</a></td>
</tr>
</table>
</div>
<div id="info-input">
<div class="total-div">
<span>商品总价(不含运费):
<span id="resultTotalMoney">0
</span>元
</span>
</div>
<div class="btorinter-div">
<button onclick="selectDelete()" class="btdelete">删除所选
</button>
<span class="viewIntegral">可获积分:
<span id="integralTotal">0
</span>点
</span>
</div>
<div>
<button class="btbuy" onclick="buyNow()">立即购买
</button>
</div>
</div>
</div>
</body>
</html>
CSS部分:
#info-table{text-align: center
;}
#info-input{width: 1200px
;margin: 0px auto
;}
#info-input>div{
width: 1200px
;
margin: 20px 0px
;
}
.shopCount{color: orange
;}
a{text-decoration: none
;color: deepskyblue
;}
#resultTotalMoney,#integralTotal{color: orange
;}
.total-div{text-align: right
;}
.btdelete{float: left
;}
.btorinter-div{height: auto
;overflow: auto
;}
.viewIntegral{float: right
;}
.btbuy{background-color: orange
;color: white
;border: 0px
;float: right
;}
#shop{
width: 800px
;margin: 0px auto
;
height: auto
;
overflow: auto
;
}
#shop li{
text-align: center
;
list-style: none
;
float: left
;
height: auto
;
overflow: auto
;
margin: 20px
;
}
#shop a{
display: block
;
height: auto
;
overflow: auto
;
}
.price{color: red
;}
JavaScript部分:
<script type
="text/javascript">
function selectAll(){
var obj
= document
.getElementsByClassName("selectOne");
var btSelectAll
= document
.getElementById("allCheck").checked
;
for(inputCheck
of obj
){
inputCheck
.checked
= btSelectAll
;
}
}
function deleteChild(obj
){
var nowtr
= obj
.parentElement
.parentElement
;
var nowtable
= nowtr
.parentElement
;
nowtable
.removeChild(nowtr
);
allShopPriceTotal();
allIntegralTotal();
}
function selectDelete(){
var obj
= document
.getElementsByClassName("selectOne");
for (var i
= obj
.length
- 1;i
>= 0;i
--){
var nowCheck
= obj
[i
];
if (nowCheck
.checked
== true){
deleteChild(nowCheck
);
}
}
allShopPriceTotal();
allIntegralTotal();
}
function reduce(obj
){
var textElement
= obj
.parentElement
.children
[1];
if (textElement
.value
== "1"){
return;
}
textElement
.value
= eval(textElement
.value
+ "-1");
var singelSumElement
= obj
.parentElement
.parentElement
.children
[5];
singleSubTotal(singelSumElement
);
allShopPriceTotal();
allIntegralTotal();
}
function plus(obj
){
var textElement
= obj
.parentElement
.children
[1];
textElement
.value
= eval(textElement
.value
+ "+1");
var singelSumElement
= obj
.parentElement
.parentElement
.children
[5];
singleSubTotal(singelSumElement
);
allShopPriceTotal();
allIntegralTotal();
}
function singleAllSubTotal(){
var obj
= document
.getElementsByClassName("shopCount");
for(shopCount
of obj
){
singleSubTotal(shopCount
);
}
}
function singleSubTotal(obj
){
var price
= obj
.parentElement
.children
[3].innerHTML
;
var count
= obj
.parentElement
.children
[4].children
[1].value
;
obj
.innerHTML
= eval(price
+ "*" + count
);
}
function allShopPriceTotal(){
var obj
= document
.getElementById("resultTotalMoney");
var allSingelSubElement
= document
.getElementsByClassName("shopCount");
var sum
= "0";
for (singelSubElement
of allSingelSubElement
){
if (sum
!= ""){
sum
+= "+";
}
sum
+= singelSubElement
.innerHTML
;
}
obj
.innerHTML
= eval(sum
);
}
function allIntegralTotal(){
var obj
= document
.getElementById("integralTotal");
var allSingelIntegralElement
= document
.getElementsByClassName("integral");
var sum
= "0";
for (singelIntegralElement
of allSingelIntegralElement
){
var count
= singelIntegralElement
.parentElement
.children
[4].children
[1].value
;
if (sum
!= ""){
sum
+= "+";
}
sum
+= singelIntegralElement
.innerHTML
+ "*" + count
;
}
obj
.innerHTML
= eval(sum
);
}
function buyNow(){
var result
= confirm("是否全部购买!");
if (result
== false){
return
}
var obj
= document
.getElementById("mytable");
obj
.innerHTML
= "";
allShopPriceTotal();
allIntegralTotal();
alert("购买成功!");
}
function addToCart(obj
){
var result
= confirm('是否将此商品添加至购物车?');
if (result
== false){
return;
}
var cartBox
= document
.getElementById("mytable");
var shop
= {
shopImg
:obj
.children
[0].src
,
shopIntegral
:parseInt(eval(obj
.children
[2].innerHTML
+ "/20")),
shopPrice
:obj
.children
[2].innerHTML
}
var img
= document
.getElementsByClassName("imgbackground");
var result
= "-1";
for (var i
= 0;i
< img
.length
;i
++){
if (shop
.shopImg
== img
[i
].children
[0].src
){
result
= i
;
}
}
if (result
!= "-1"){
var count
= img
[result
].parentElement
.children
[4].children
[1];
count
.value
= eval(count
.value
+ "+1");
singleAllSubTotal();
}else{
var tr
= document
.createElement("tr");
var td1
= document
.createElement("td");
td1
.innerHTML
= '<input type="checkbox" class="selectOne" />';
var td2
= document
.createElement("td");
td2
.className
= "imgbackground";
td2
.innerHTML
= '<img src="'+ shop
.shopImg
+'" height="100" width="100"/>';
var td3
= document
.createElement("td");
td3
.className
= "integral";
td3
.innerHTML
= shop
.shopIntegral
;
var td4
= document
.createElement("td");
td4
.innerHTML
= shop
.shopPrice
;
var td5
= document
.createElement("td");
td5
.innerHTML
= '<button οnclick="reduce(this)">-</button> '
+ '<input type="text" size="1" readonly="true" value="1"/>'
+ ' <button οnclick="plus(this)">+</button>';
var td6
= document
.createElement("td");
td6
.className
= "shopCount";
td6
.innerHTML
= parseInt(shop
.shopPrice
);
var td7
= document
.createElement("td");
td7
.innerHTML
= '<a href="#" class="delete" οnclick="deleteChild(this)">删除</a>';
tr
.appendChild(td1
);
tr
.appendChild(td2
);
tr
.appendChild(td3
);
tr
.appendChild(td4
);
tr
.appendChild(td5
);
tr
.appendChild(td6
);
tr
.appendChild(td7
);
cartBox
.appendChild(tr
);
}
allShopPriceTotal();
allIntegralTotal();
changeBackground();
}
function changeBackground(){
var imgtd
= document
.getElementsByClassName("imgbackground");
for (singeltd
of imgtd
){
singeltd
.onmousemove = function(){
this.style
.backgroundColor
= "orange";
}
singeltd
.onmouseleave = function(){
this.style
.backgroundColor
= "white";
}
}
}
window
.onload = function(){
changeBackground();
singleAllSubTotal();
allShopPriceTotal();
allIntegralTotal();
}
</script
>
转载请注明原文地址: https://mac.8miu.com/read-488425.html