函数中获取动态创建的30个input的值
发布于 6 年前 作者 yanshao 5610 次浏览 来自 问答

因为需要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);    //这个是可以打印出来的

}

}

5 回复

第一种:

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 取得循环数字又是什么类型,是不是因为这些类型不同,所以导致系统读不出来。

回到顶部