代码如下:
其中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
哪位大神能帮忙看看,为什么?
for (i = 0; i < list.goodid.length; i++) 循环是取的goodid 的长度值,并不是取的你list 的长度值,所以估计你这个list 的长度没有你的goodid 的长度长,所以应该是找不着
我写错了。
循环的list.goodid。
通过调试,元素是能找到的。
我现在解决了。但是不知道原因对不对?可能是因为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]);
});