购物车功能实现代码解析:多选框、全选、数量增减、金额统计、编辑与删除
这段代码是一个购物车页面的功能实现,主要实现了以下功能:
-
获取页面中类名为'mycheckbox'的复选框数量,并赋值给变量checkboxLen。
-
给页面中的复选框绑定点击事件,根据复选框的选中状态改变相应图片的显示。
-
给类名为'mycheckbox'的复选框绑定点击事件,根据选中的复选框数量来判断是否全选,并统计总金额。
-
给类名为'allselect'的复选框绑定点击事件,根据全选复选框的选中状态改变所有复选框的状态,并统计总金额。
-
定义函数total来统计选中商品的总金额,并根据金额是否为整数来显示不同的格式。
-
给类名为'sub'的按钮绑定点击事件,实现数量减少的功能,并调用total函数重新计算总金额。
-
给类名为'add'的按钮绑定点击事件,实现数量增加的功能,并调用total函数重新计算总金额。
-
定义函数isInteger来判断一个数是否为整数。
-
给类名为'cart-operation'的按钮绑定点击事件,实现编辑和完成状态的切换,以及相应的显示和隐藏操作。
-
给类名为'delete-btn'的按钮绑定点击事件,实现删除选中商品的功能,并调用total函数重新计算总金额。
代码示例:
var checkboxLen;
var checkedLen = 0;
$(function(){
var checkbox = document.getElementsByClassName('mycheckbox')
checkboxLen = checkbox.length;
})
// 多选框-统一
$(document).on('click','.checkbox',function(){
if($(this)[0].checked){
// 需变 选中
$(this).prev().attr('src','./images/tick-s.png');
}else{
// 需变 不选中
$(this).prev().attr('src','./images/tick.png');
}
})
// 多选框-上面
$(document).on('click','.mycheckbox',function(){
checkedLen = 0;
$('.mycheckbox').each(function(index,item){
if($(this)[0].checked){
checkedLen++
}
});
$('.checkedLen').html(checkedLen);
if(checkedLen==checkboxLen){
$('.allselect').prop('checked', true);
$('.allselect').prev().attr('src','./images/tick-s.png');
}else{
$('.allselect').prop('checked', false);
$('.allselect').prev().attr('src','./images/tick.png');
}
total();
})
// 多选框-全选
$(document).on('click','.allselect',function(){
if($(this)[0].checked){
// 需变 选中
$('.tick').attr('src','./images/tick-s.png');
$('.checkbox').prop('checked', true);
}else{
// 需变 不选中
$('.tick').attr('src','./images/tick.png');
$('.checkbox').prop('checked', false);
}
checkedLen = 0;
$('.mycheckbox').each(function(index,item){
if($(this)[0].checked){
checkedLen++
}
});
$('.checkedLen').html(checkedLen);
total();
})
// 统计金额
function total(){
var integer = 0;
$('.mycheckbox').each(function(index,item){
if($(this)[0].checked){
var price = Number($(this).parents('.cart-block').find('.price').html());
var num = $(this).parents('.cart-block').find('.num-input').val();
integer += price*num;
}
});
integer = Math.floor(integer*100)/100;
if(isInteger(integer)){
$('.integer').html(integer);
$('.point').html('');
return;
}
var str = integer.toString();
var index = str.indexOf('.');
var result = str.substr(index + 1,str.length);
var integerStr = str.substr(0,index);
$('.integer').html(integerStr);
$('.point').html('.'+result);
}
// 数量增减
$(document).on('click','.sub',function(){
var val = $(this).parent().find('.num-input').val();
if(val==1){
return;
}
var num = Number(val)-1;
$(this).parent().find('.num-input').val(num);
total();
})
$(document).on('click','.add',function(){
var val = $(this).parent().find('.num-input').val();
var num = Number(val)+1;
$(this).parent().find('.num-input').val(num);
total();
})
function isInteger(obj) {
return obj%1 === 0
}
// 编辑
$(document).on('click','.cart-operation',function(){
if($(this).hasClass('edit')){
$(this).removeClass('edit');
$(this).addClass('delete');
$('.settlement').hide();
$('.delete-btn').show();
$(this).html('完成');
}else{
$('.settlement').css('display','flex');
$('.delete-btn').hide();
$(this).addClass('edit');
$(this).removeClass('delete');
$(this).html('编辑');
}
})
// 删除
$(document).on('click','.delete-btn',function(){
$('.mycheckbox').each(function(index,item){
if(item.checked){
$(item).parents('.cart-block').remove();
}
});
total();
})
代码解释:
- 获取复选框数量: 代码首先获取页面中类名为'mycheckbox'的复选框数量,并赋值给变量checkboxLen,方便后续判断是否全选。
- 绑定点击事件: 代码为页面中的所有复选框绑定了点击事件。根据复选框的选中状态,改变相应的图片显示,并统计选中商品的数量和总金额。
- 全选功能: 代码为全选复选框绑定了点击事件,当点击全选复选框时,会根据其选中状态改变所有复选框的状态,并重新计算总金额。
- 统计总金额: 函数total负责统计选中商品的总金额,并根据金额是否为整数来显示不同的格式。
- 数量增减功能: 代码为数量增减按钮绑定了点击事件,实现数量的增加和减少,并调用total函数重新计算总金额。
- 编辑与删除功能: 代码为编辑和删除按钮绑定了点击事件,实现编辑和删除状态的切换,以及相应的显示和隐藏操作。
这段代码实现了购物车页面常用的功能,可以作为学习参考,并根据实际需求进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/dI2U 著作权归作者所有。请勿转载和采集!