JQuery如何向数组插入多个元素?表单表格多行取值仅首行生效问题
问题修复方案
错误点梳理
- DOM选择器匹配错误:HTML中tbody的id为
entrybody,JS代码中使用了错误的选择器$("#productbody tbody tr"),无法正确匹配到表格行 - 数组赋值逻辑缺陷:仅在循环外为数组索引0的位置创建了空对象,count自增后未给后续索引创建空对象,导致第二行及以后赋值时触发undefined报错
- 冗余的count变量维护:完全可以直接用数组
push方法添加元素,无需手动维护索引计数避免出错
修正后完整JS代码
$(function() { $.post("action.php", function(data) { $("[name='title']").val(data.title); $("[name='body']").val(data.body); }, "json"); setInterval(function() { var itemlist = []; var title = $("[name='title']").val(); var body = $("[name='body']").val(); // 修正选择器,直接匹配entrybody下的所有tr $("#entrybody tr").each(function() { var that = $(this); var prdCode = that.find("[name='prd_code']").val(); if (prdCode.length !== 0) { // 每次符合条件直接push新对象到数组即可 itemlist.push({ code: prdCode, name: that.find("[name='prd_name']").val(), cond: that.find("[name='prd_cond']").val() }); } }); console.log(itemlist); }, 2000); });
效果说明
修改后可以正常获取所有填写了商品编码的行数据,不会再出现仅能读取第一行、或者第二行输入时报错的问题。
内容的提问来源于stack exchange,提问作者Hai Yaa
相关产品推荐
相关产品推荐

