美文网首页
循环按钮的控制

循环按钮的控制

作者: 异同 | 来源:发表于2019-11-06 12:08 被阅读0次

目标:通过for循环接受数据并生成了一系列的按钮,需要实现点击某个按钮然后改变这个按钮的状态(样式)。
问题:在使用时发现通过常规的绑定样式类修改的方式,由于for循环生成的button绑定的是同一个class变量名,因此会出现点击一个按钮结果其他按钮同样会发生改变的问题。例如:

html:
<block wx for="data">
<button class="{{button-class}}" bindtap="changeClass"></button>
</block>

js:
changeClass(event){
this.setData({button-class:this.data.button-class=="button-a"?"button-b":"button-a"})
}

css:
.button-a {
  background: white;
  color: black
}
.button-b {
  background: black;
  color: white
}

解决方案:
使用两个button按钮来替代之前一个button,这两个button分别具有a、b两种样式,通过wx:if判断当前显示哪一个button。

html:
<block wx:for="{{button_data}}">
  <button class="button-a" data-index="{{index}}" wx:if="{{button_status[index]==1}}" bindtap="func1">{{item}}</button> 
  <button class="button-b" data-index="{{index}}" wx:if="{{button_status[index]==0}}" bindtap="func1">{{item}}</button>
</block>

js:
Page({
  data: {
    button_data: ["aaa", "bbb", "ccc"],//按钮数据
    button_status:[]//按钮状态
  },

  onLoad: function (options) {
    if (this.data.button_status.length == 0) {
      this.setData({ button_status: this.data.button_data.map(t => Number(t === t)) })}//判断按钮状态是否初始化,将其初始化为值全为1的列表
  },

  func1(event){
    var buttondata_tmp = this.data.button_data
    var buttonstatus_tmp =this.data.button_status
    const index = event.currentTarget.dataset.index //选中的按钮id
    buttonstatus_tmp[index] > 0 ? buttonstatus_tmp[index] = 0 : buttonstatus_tmp[index]=1 //将选中的按钮状态反向,原来为0则变为1,原来为1则改变为0
    this.setData({ button_status: buttonstatus_tmp})//重新设置按钮状态值
  }
})

css:
.button-a {
  background: #333333;
  color: #eeeeee
}
.button-b {
  background: #eeeeee;
  color: #333333
}

相关文章

  • 循环按钮的控制

    目标:通过for循环接受数据并生成了一系列的按钮,需要实现点击某个按钮然后改变这个按钮的状态(样式)。问题:在使用...

  • Swift学习笔记(0.1---循环按钮 ScrollView

    循环按钮+ScrollView处理点击事件 目的:控制器的scroll联动上方按钮的 按钮的创建,这个按钮的多少取...

  • for循环创建button按钮

    循环创建横向button按钮

  • 循环创建按钮

    - (void)setHomeFooterViewOne { // 一个图片的高度margin20 = 20 像...

  • 控制流程

    控制流程 本节包含内容: For循环 While循环 条件语句 控制转移语句 For循环 for循环用来按照指定的...

  • 4.3 程序的循环结构

    四、程序的控制结构 4.3 程序的循环结构 遍历循环 无限循环 循环控制保留字 循环的高级用法 遍历循环 遍历某个...

  • Python——控制语句

    Python控制语句 循环(loop)控制 循环的最基本语法 for循环 语法 rangerange(起始,范围,...

  • 花了两天半,vue原生轮播终于搞完

    功能包括:可以无缝循环,也可以不无缝循环可以配置左右按钮和下面的小点点按钮下面的小点点按钮可以点击支持手指滑动轮播...

  • 17.JavaScript-循环嵌套练习

    1. 循环嵌套规律 在循环嵌套中外循环控制的是行数,内循环控制的是列数 ---------------------...

  • 用Java实现一些简单算法

    for循环,外循环控制的是行数,内循环控制的是每一行的个数。 --------------------------...

网友评论

      本文标题:循环按钮的控制

      本文链接:https://www.haomeiwen.com/subject/wrhubctx.html