小程序购物车radio全选单选

文章描述了一个微信小程序中实现全选和单选功能的代码示例。通过WXML和JS交互,当所有子项被选中时显示全选状态,反之则显示未选中状态。点击全选按钮可以切换所有子项的选中状态,而单个子项的点击事件会更新其选中状态并影响全选的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当所有子项都选中时,显示选中状态,否则为不选中状态。未选中状态时点击操作,把所有子项都所中。选中状态点击操作,把所有子项都不选中。

先是wxml:

<radio value="0" checked="{{allchecked}}" bindtap="selectAll" color="#d81e06" />商品列表


<view class="car-list" wx:for="{{car_list}}" wx:key="index" wx:for-item="item">


<radio checked="{{item.selected}}" bindtap="selectList" data-index="{{index}}" color="#d81e06" />{{item.title}}


</view>

allchecked是控制全选的选中状态的变量,selectAll是全选的点击事件,selectlist是子项点击事件。

再是js代码:

data: {

    car_list: [],

    allchecked: false,

},


// 全选事件

  selectAll(e) {

    // 是否全选状态

    var selectAllStatus = this.data.allchecked;

    selectAllStatus = !selectAllStatus;

    var dataList = this.data.car_list;

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

      // 改变所有商品状态

      dataList [i].selected = selectAllStatus;

    }

    this.setData({

      allchecked: selectAllStatus,

      car_list: dataList,

    });

  },

// 选择事件

  selectList(e) {

    // 获取data- 传进来的index

    let index = e.currentTarget.dataset.index;

    // 获取购物车列表

    let dataArr = this.data.car_list;

    // 获取当前商品的选中状态

    let selected = dataArr[index].selected;

    // 改变状态

    dataArr[index].selected = !selected;

    this.setData({

      car_list: dataArr

    });



    // 改变全选状态

    for (var i = 0; i < this.data.car_list.length; i++) {

      // 当状态为全选时,每个元素其中有一个为false,则取消全选

      // 当状态为非全选时,每个元素都为true,则全选

      if (this.data.allchecked) {

        if (!this.data.car_list[i].selected) {

          this.setData({

            allchecked: false

          });

          break;

        }

      } else {

        if (this.data.car_list[i].selected) {

          this.setData({

            allchecked: true

          });

        } else {

          this.setData({

            allchecked: false

          });

          break;

        }

      }

    }

  },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值