表单submit时已经获取到了复选组的value,却提示can't read?
发布于 5 年前 作者 yanjin 3968 次浏览 来自 问答

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

<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

3 回复

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

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

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

回到顶部