收藏
回答

表单submit时已经获取到了复选组的value,却提示can't read?

问题模块 框架类型 终端类型 微信版本 基础库版本
框架 小程序 工具 6.6.1 1.9.1


已经搞不清楚问题出在函数的哪个部分了,头大了好几圈啊……,


<form bindsubmit = "submit">

<checkbox-group name = "havechecked" >
                   <label wx:for="{{list}}" wx:key="sn">
                       <checkbox value="{{index}}" checked="{{item.checked}}" />
                       {{list.text}}
                   label>
               checkbox-group>
form>


data: {
       list:[...]
}
submit: function(){
      var list = this.data.list;
       var value = e.detail.value;
       var toDelete = value.havechecked;
       console.log(toDelete, value);
       toDelete.forEach(function (v) {
           list.splice[v, 1];
       });
       for (var i = 0; i < list.length; ++i) {
           list[i].checked = false;
       }
       this.setData({
           list: list,
       })
   },

结果:

["1","2","0" ] {havechecked: Array(3)}

Cannot read property 'havechecked' of undefined;at /.../... submit function

TypeError: Cannot read property 'havechecked' of undefined


最后一次编辑于  2018-02-08  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

3 个回答

  • 大头
    大头
    2018-02-08

    wxml的标签不封闭不是问题。是我敲这个示例时不知什么原因造成的。重点是这个havechecked明明已经获取到了,为什么还会出这个提示,console.log( )后面的哪个部分出了问题?(这些部分根本没有显式调用过这个haveked)。对JavaScript理解不深,已经不知道是javaScript的问题还是小程序框架的问题了……脑细胞死了一片……

    2018-02-08
    赞同
    回复
  • 大头
    大头
    2018-02-08

    知道原因了,list.splice会修改list,虽然还是没明白为什么会提示这个错误,但是知道这个submit函数是有问题的。

    2018-02-08
    赞同
    回复
  • 大头
    大头
    2018-02-08

    但是解决了我楼上说的问题之后,小程序的功能是正常了,但是仍然存在这个错误提示……,一头雾水中。

    2018-02-08
    赞同
    回复