因为需要30个input ,所以是用wx:for 来创建的,input的name=‘shuru{{index}}’,都是存在form里的,点击提交按钮后,要如何才能在formSumbit 函数中读取每个input的值呢?
我试着用了以下代码,但是没一个成功的:
第一种:
formSubmit: function (e) {
console.log(e.detail.value) //这个是能打印成功的,说明form里的数据已经传过来了
for (var i = 0; i < n; i++) {
console.log(e.detail.value.shuru[1]); //此时wxml里 input的name=‘shuru[{{index}}]’,打印不出来
console.log(e.detail.value.shuru[i]); //这句就更不成功了
}
}
第二种: //此时wxml里 input的name=‘shuru{{index}}’, 跟第一种比,就是把【】去掉了
formSubmit: function (e) {
console.log(e.detail.value) //这个是能打印成功的,说明form里的数据已经传过来了
for (var i = 0; i < n; i++) {
var shu=“e.detail.value.shuru”+i;
console.log(shu); //不成功
console.log(e.detail.value.shuru0); //这个是可以打印出来的
}
}
第一种:
shuru[0]这样的name不是有效变量,不能通过
e.detail.value.shuru[
0
]这样的方式访问,而应该用:e.detail.value[‘shuru[0]’]第二种:
console.log(shu); 你打印的是字符串,而不是该字符串变量对应的值,有效的写法是:e.detail.value[‘shuru0’] 或 e.detail.value.shuru0
第三种:既然是完全的一维数组,直接e.detail.value[0]访问即可。
js的数组和Object都是可遍历的,访问方式都可以用 obj[index] 或obj.index的方式,如果index是有效变量名(由字符、数字、_ $构成,且第一个字符不为数字),则两种通用,否则只能用第一种
第三种: //此时wxml里 input的name='{{index}}',
formSubmit: function (e) {
console.log(e.detail.value.0) //无法打印
var hxsd=new Array();
hxsd=e.detail.value;
console.log(hxsd) ; //把e.detail.value赋值给一个数组,然后这个数组是可以打印的(这在三种方法里都能实现),但如果想打 印数组的一部分,也是不成功的。
}
}
//我现在怀疑e.detail.value的数据类型到底是什么,以及e.detail.value这些字母又算什么类型,直接写的0,1这些数字算什么类型, 用for 取得循环数字又是什么类型,是不是因为这些类型不同,所以导致系统读不出来。