收藏
回答

购物车+1、-1方面的问题?

我给input加上data-operation="{{1}}"这个自定义属性以后,从js的参数e.currentTarget.operation中看到是num类型的1,但是执行了+1代码以后,发现这个1不会与input中现有的value做数学的+1运算,而是直接以字符串拼接的形式拼在input值的后面。这个情况只会在input有输入时出现,如果编译以后input没有输入,就是正常的从0开始不断+1

html代码

<text>您需要:</text>
<input type="text" bindinput="handleInput" class="Inputss" />
<text></text>
<view>{{num}}</view>
<button bindtap="handleTapPlus" data-operation="{{1}}">+</button>
<button bindtap="handleTapMinus" data-operation="{{-1}}">-</button>

js代码

Page({
  data: {
    num:0
  },
  handleInput(e) {
    console.log(e),
    this.setData({
      num: e.detail.value,
    })
  },
  handleTapPlus(e){
    const operation = e.currentTarget.dataset.operation;
    console.log(e)
    console.log(operation);
    this.setData({
      num: this.data.num + operation
    })
  },
  handleTapMinus(e){
    const operation = e.currentTarget.dataset.operation;
    console.log(e);
    console.log(operation);
    this.setData({
      num: this.data.num + operation
    })
  }
})

编译后没有input输入

无input输入进行两次+1

无input输入进行一次-1

有input输入进行+1

有input输入进行-1

我试着转换格式,但是作用不大。希望各位大佬不吝赐教

回答关注问题邀请回答
收藏

1 个回答

  • 卢霄霄
    卢霄霄
    2021-01-26

    handleInput 拿到的数字是字符串 Number() 包一下

    2021-01-26
    有用 2
    回复 2
    • 陈百川
      陈百川
      2021-01-26
      感谢,我去试试
      2021-01-26
      回复
    • 陈百川
      陈百川
      2021-01-26
      成功了,太感谢了
      2021-01-26
      回复
登录 后发表内容
问题标签