在 $.each 中创建新的 assoc 对象
Create new assoc object in $.each
我认为这个JavaScript应该可以工作,但似乎没有。我能做些什么来修复它。
我也愿意接受其他方法。我想做的只是返回变量名称(cn,sc,fn)及其值(例如。 var cn = $('#deFNIN').val();
-- 所以: "cn":"MacDonalds","sc":"Mac"
)
js小提琴
HTML:
<input id="deCoNameIN" type="text" value="MacDonalds" /><br>
<input id="deShortCoIN" type="text" value="Macs" /><br>
<input id="deFNIN" type="text" value="Fred" /><br>
js/jQ:
var objFields = {
'cn': { 'id':'deCoNameIN', 'required':'True', 'title':'Company Name'},
'sc': { 'id':'deShortCoIN', 'required':'True', 'title':'Short Co name' },
'fn': { 'id':'deFNIN', 'required':'false', 'title':'Contact first name' },
};
var arrDistinfo = [];
$.each(objFields,function(_, varname){
tmp = $("#"+varname.id).val().trim();
alert('Varname: ' +_+' Val: '+tmp);
arrDistinfo.push({_ : tmp});
});
var xx = JSON.stringify(arrDistinfo);
alert(xx);
所需的输出应如下所示:
["cn":"Macdonalds", "cs":"Macs", "fn":"Fred"]
你不能像这样的变量使用像对象键这样的变量(在你的例子中,{_ : tmp}
与 {"_" : tmp}
相同),你需要数组符号:
var objFields = {
'cn': {
'id': 'deCoNameIN',
'required': 'True',
'title': 'Company Name'
},
'sc': {
'id': 'deShortCoIN',
'required': 'True',
'title': 'Short Co name'
},
'fn': {
'id': 'deFNIN',
'required': 'false',
'title': 'Contact first name'
},
};
var arrDistinfo = [];
$.each(objFields, function(_, varname) {
tmp = $("#" + varname.id).val().trim();
alert('Varname: ' + _ + ' Val: ' + tmp);
var obj = {};
obj[_] = tmp;
arrDistinfo.push(obj);
});
var xx = JSON.stringify(arrDistinfo);
alert(xx);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="deCoNameIN" type="text" value="MacDonalds" />
<br>
<input id="deShortCoIN" type="text" value="Macs" />
<br>
<input id="deFNIN" type="text" value="Fred" />
<br>
更新
要获得该特定格式,您需要将其设置为字符串,因为JS没有这种类似数组的结构。
var objFields = {
'cn': {
'id': 'deCoNameIN',
'required': 'True',
'title': 'Company Name'
},
'sc': {
'id': 'deShortCoIN',
'required': 'True',
'title': 'Short Co name'
},
'fn': {
'id': 'deFNIN',
'required': 'false',
'title': 'Contact first name'
},
};
var arrDistinfo = {};
$.each(objFields, function(_, varname) {
tmp = $("#" + varname.id).val().trim();
arrDistinfo[_] = tmp;
});
var output = [];
for (var i in arrDistinfo) {
output.push('"' + i + '":"' + arrDistinfo[i] + '"');
}
alert('[' + output.join(', ') + ']');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="deCoNameIN" type="text" value="MacDonalds" />
<br>
<input id="deShortCoIN" type="text" value="Macs" />
<br>
<input id="deFNIN" type="text" value="Fred" />
<br>
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何使用json将对象列表从java转换为javascript
- 序列化数据属性中对象的最可靠方法
- 如何访问声音管理器2创建的声音对象
- FabricJs-限制主对象内添加对象的移动区域
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 值对象在某个变量发生更改后发生更改
- 在 $.each 中创建新的 assoc 对象
- 将PHP assoc数组转换为json对象