首页 新闻 搜索 专区 学院

jquery通过name获取元素并设置值???

0
悬赏园豆:10 [已解决问题] 解决于 2019-05-10 13:53

代码如下:
其中list为后台传来的集合,list中有goodid、goodnum、batchNum、supplierid属性。
因为select、input元素都是根据list的数量动态生成的,所以需要使用for循环进行遍历,然后赋值;
if (list.goodid.length > 0) {
for (i = 0; i < list.goodid.length; i++) {
fnAddTr();
}
debugger;
for (i = 0; i < list.goodid.length; i++) {
$("select[name='goodid']")[i]val(list.goodid[i]);
$('input[name="goodnum"]')[i].val(list.goodnum[i]);
$('input[name="batchNum"]')[i].val(list.batchNum[i]);
$("select[name='supplierid$']")[i].val(list.supplierid$[i]);
}
}

但是,出现报错:
Uncaught TypeError: $(...)[i].val is not a function

哪位大神能帮忙看看,为什么?

1sa2sa的主页 1sa2sa | 菜鸟二级 | 园豆:284
提问于:2019-05-10 12:04
< >
分享
最佳答案
0

for (i = 0; i < list.goodid.length; i++) 循环是取的goodid 的长度值,并不是取的你list 的长度值,所以估计你这个list 的长度没有你的goodid 的长度长,所以应该是找不着

收获园豆:10
画笔灬 | 小虾三级 |园豆:910 | 2019-05-10 13:05

我写错了。
循环的list.goodid。
通过调试,元素是能找到的。

1sa2sa | 园豆:284 (菜鸟二级) | 2019-05-10 13:31

我现在解决了。但是不知道原因对不对?可能是因为jquery和js的for循环夹杂着使用出现的问题。
这样的方式就解决了:
$("select[name='goodid']").each(function (i, e) {
$(e).val(list.goodid[i]);
});
$("input[name='goodnum']").each(function (i, e) {
$(e).val(list.goodnum[i]);
});
$("input[name='batchNum']").each(function (i, e) {
$(e).val(list.batchNum[i]);
});
$("select[name='supplierid']").each(function (i, e) {
$(e).val(list.supplierid[i]);
});
$("input[name='supplierName']").each(function (i, e) {
$(e).val(list.supplierName[i]);
});

1sa2sa | 园豆:284 (菜鸟二级) | 2019-05-10 13:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册