//先应该判断库存,再进行支付,bug心得体会
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
*{
padding: 0;
margin: 0;
}
.ball{
width: 700px;
height: 300px;
margin: 50px auto;
display: flex;
/* background-color: aqua; */
justify-content: space-between;
}
.ball div{
width: 200px;
height: 200px;
background-color: aqua;
}
.main div{
width: 600px;
height: 50px;
margin: 50px auto;
margin-top: -50px;
}
.main div input{
width: 50px;
}
.main div .sub{
width: 30px;
}
.main div .add{
width: 30px;
}
.del{
width: 100px;
}
</style>
</head>
<body>
<div class="ball"></div>
<div class="main"></div>
<script>
var ball=document.querySelector('.ball')
var main=document.querySelector('.main')
var arr=[
{
title:'足球',
price:200,
id:1,
num:9
},
{
title:'篮球',
price:230,
id:2,
num:8
},
{
title:'羽毛球',
price:3,
id:3,
num:80
}
]
//商品渲染
arr.forEach(function(item,index){
console.log(item)
ball.innerHTML+=`<div class="title">
<p class="${item.id}">${item.title}</p>
<p>价格${item.price}</p>
<span class="num">剩余量${item.num}</span>
<button index="${index}">加入购物车</button>
</div>`
})
var btn=document.querySelectorAll('button')
var array=[]
//加入数据在空数组
for(let i=0;i<btn.length;i++){
btn[i].οnclick=function(e){
var target=e.target
index=target.getAttribute('index')
console.log(arr[index].id)
var res=array.some(item=>{
return item.id==arr[index].id
}
)
if(res){
array.forEach(item=>{
if(index-0+1==item.id&&item.sun<item.num){
item.sun++
}
else if(item.sun==item.num&&index-0+1==item.id){
alert('已增添至上限!')
}
}
)
}
else{
array.push(arr[index])
array.forEach(item=>{
console.log(index-0+1)
if(index-0+1==item.id){
item.sun=1
}
}
)
}
console.log(array)
//购物车渲染
var a=0
array.forEach((item,index)=>{
var input=document.querySelectorAll('.input')
if(a==0){
main.innerHTML=''
}
a++
main.innerHTML+=`<div class="${item.id}">
<input type="checkbox" class="input"/>
<span class="title">${item.title}</span>
<button class="sub">-</button>
<input type="text" value="${item.sun}" class="input1"/>
<button class="add">+</button>
<span class="price1">单价${item.price}</span>
<span class="num1">剩余量${item.num}</span>
<span class="price2">总价${item.price*item.sun}</span>
<button class="del">删除</button>
</div>`
if(index==array.length-1){
main.innerHTML+=`<div class="tot">
<input type="checkbox" class="lte"/>
<span class="tit">合计价格:0</span>
<button class="pay">支付</button>
</div>
`
}
}
)
}
}
document.οnclick=function(){
var tot=0
var inputs=document.querySelectorAll('.input')
var tit=document.querySelector('.tit')
inputs=[...inputs]
console.log(inputs)
for(let i=0;i<inputs.length;i++) {
//计算tit的合
if(inputs[i].checked){
var ID=inputs[i].parentNode.getAttribute('class')
console.log(ID)
array.forEach((item,index)=>{
if(item.id==ID){
tot+=item.price*item.sun
// item.checked=true
tit.innerHTML=`合计价格:${tot}`
console.log(item)
}
}
)
}
}
var inputs=document.querySelectorAll('.input')
var inputs1=document.querySelectorAll('.input1')
var price2=document.querySelectorAll('.price2')
var lte=document.querySelector('.lte')
var tit=document.querySelector('.tit')
var sub=document.querySelectorAll('.sub')
var add=document.querySelectorAll('.add')
var del=document.querySelectorAll('.del')
var tot=document.querySelector('.tot')
var pay=document.querySelector('.pay')
var num1=document.querySelectorAll('.num1')
var num=document.querySelectorAll('.num')
inputs=[...inputs]
inputs1=[...inputs1]
price2=[...price2]
sub=[...sub]
add=[...add]
del=[...del]
num1=[...num1]
for(let i=0;i<inputs.length;i++){
console.log(inputs)
//实现上面元素全打勾时,下面才打勾
inputs[i].οnclick=function(){
var res=inputs.every(function(item){
return item.checked
})
// console.log(123)
lte.checked=res
//消除上面元素全未打勾时还有合计价格的bug
var rel=inputs.some(function(item){
return item.checked
})
if(!rel){
tit.innerHTML=`合计价格:0`
}
}
}
//实现下面元素打勾时,上面全打勾
lte.οnclick=function(){
let state = lte.checked
inputs.forEach(function(item){
item.checked=state
})
// //消除下面元素未打勾时还有合计价格的bug
if(!state){
tit.innerHTML=`合计价格:0`
}
}
//在输入框时可改数字
for(let i=0;i<inputs1.length;i++){
inputs1[i].οnblur=function(){
var ID=inputs1[i].parentNode.getAttribute('class')
var one=0
array.forEach(function(item){
if(item.id==ID&&item.sun<item.num&&inputs1[i].value<item.num){
one=item.price*inputs1[i].value
item.sun=inputs1[i].value
price2[i].innerHTML=`总价${one}`
}
if(inputs1[i].value>item.num&&item.id==ID){
alert('超出库存,请重新输入!')
inputs1[i].value=1
one=item.price*inputs1[i].value
item.sun=inputs1[i].value
price2[i].innerHTML=`总价${one}`
}
}
)
}
}
//实现-的按钮功能
for(let i=0;i<sub.length;i++){
sub[i].οnclick=function(){
var ID=sub[i].parentNode.getAttribute('class')
var one=0
inputs1[i].value--
if(inputs1[i].value<=0){
inputs1[i].value=0
}
array.forEach(function(item){
if(item.id==ID){
one=item.price*inputs1[i].value
item.sun=inputs1[i].value
price2[i].innerHTML=`总价${one}`
}
}
)
}
}
//实现+的按钮功能
for(let i=0;i<add.length;i++){
add[i].οnclick=function(){
var ID=add[i].parentNode.getAttribute('class')
var one=0
inputs1[i].value++
// if(inputs1[i].value<=0){
// inputs1[i].value=0
// }
array.forEach(function(item){
if(inputs1[i].value>item.num&&item.id==ID){
console.log(item.num)
alert('已超出库存!')
inputs1[i].value=item.num
one=item.price*inputs1[i].value
item.sun=inputs1[i].value
price2[i].innerHTML=`总价${one}`
}
if(item.id==ID&&inputs1[i].value<=item.num){
one=item.price*inputs1[i].value
item.sun=inputs1[i].value
price2[i].innerHTML=`总价${one}`
}
}
)
}
}
//实现删除的按钮功能
for(let i=0;i<del.length;i++){
del[i].οnclick=function(){
if(confirm('确定删除吗?')){
var ID=del[i].parentNode.getAttribute('class')
del[i].parentNode.remove()
var one=0
array.forEach(function(item,index){
if(item.id==ID){
array.splice(index,1)
if(array.length==0){
// console.log(array.length)
tot.remove()
}
}
}
)
}
}
}
//实现支付的按钮功能
pay.οnclick=function(){
var a2=0,b=0,c=0,d=0,a1=0
var flat=true
for(let i=0;i<inputs.length;i++) {
var rel=inputs.some(function(item){
return item.checked==true
})
if(inputs[i].checked){
var ID=inputs[i].parentNode.getAttribute('class')
array.forEach((item,index)=>{
if(item.id==ID&&item.sun<=item.num&&flat){
if(a2==0&&confirm('确定支付吗?')){
alert('支付成功!')
}
else if(a2==0){
alert('已取消支付!')
a2++
a1++
}
if(a1==0){
item.num=item.num-item.sun
a2++
num1[index].innerHTML=`剩余量${item.num}`
// arr=array
// num[index].innerHTML=`剩余量${item.num}`
num[index].innerHTML=`剩余量${item.num}`
inputs1[i].value=0
one=item.price*inputs1[i].value
item.sun=inputs1[i].value
price2[i].innerHTML=`总价${one}`
}
}
}
)
}
if(!rel&&c==0){
alert('你还未选择商品!')
c++
}
}
}
}
</script>
</body>
</html>