无法将DOM元素id作为键连同对应值推入JavaScript数组的问题求助
问题原因
- 在ES5及更早的对象字面量语法中,键名会被默认当作字符串字面量处理,不会解析为变量值,你写的
quote_str会直接作为固定键名存入对象 - 额外给id拼接单引号
var quote_str = "'" + id + "'"是多余操作,对象键名不需要额外包裹单引号
修复方案
使用ES6支持的计算属性名语法,将变量用方括号[]包裹,JS会自动将变量的实际值作为对象的键名。
你当前的选择器没有包含复选框控件,如果需要收集checkbox的值可以补充到选择器规则中,修正后的代码如下:
$('#btnClick').click(function() { saveDiv($("#div1")) }); function saveDiv(div) { var controlValues = []; div.find('input:text, input:password, input:file, select, textarea, input:checkbox') .each(function() { var id = $(this).attr("id"); controlValues.push({ [id]: $(this).val() }); console.log(controlValues); }); }
效果说明
修改后生成的数组结构符合预期,示例如下:
[ {"vesselname": "输入的船名"}, {"vesseltype": "选择的船型"}, {"formCheck5": "复选框对应值"} ]
内容的提问来源于stack exchange,提问作者Developer
相关产品推荐
相关产品推荐

