如何创建动态命名的JavaScript对象属性?
这是我的如何创建动态命名的JavaScript对象属性?,javascript,jquery,properties,Javascript,Jquery,Properties,这是我的 <form> <input type="text" name="item1" class="grab" value="userInput" /> <input type="text" name="somethingelse1" class="grab" value="differentUserInput" /> ... (any number of inputs) </form> 我尝试过,但没有成功: var output
<form>
<input type="text" name="item1" class="grab" value="userInput" />
<input type="text" name="somethingelse1" class="grab" value="differentUserInput" />
... (any number of inputs)
</form>
我尝试过,但没有成功:
var output = new Array();
$('.grab').each( function(index) {
output.push({$(this).attr('name'): $(this).val()} );
});
我尝试了几种变体,包括试用eval(),但都没有效果。如果我删除$(this.attr('name'),并给它一个静态名称,它就会工作。。。那么如何创建动态命名的对象呢?文本对象语法不能用于非文本键。 要对对象使用非文字键,需要使用
object[keyExpression]
符号,如下所示。(这相当于keyExpression=“key”
时的object.key
,但请注意,前一种情况将表达式作为键,后一种情况将表达式作为标识符。)
快乐编码
也可考虑使用:
我仅将窗体的id作为此函数的参数:
function form2JSON(form){
var info_ser = $('#'+form).serialize();
var data = info_ser.split('&');
var output = {};
$.each( data, function( i, l ){
var data_input = l.split('=');
output[data_input[0]] = data_input[1];
});
return output;
}
结果对象类似于这样的
对象{fieldname=“value”,fieldname1=“value1”,fieldname2=“value3”,…}
谢谢,这很有效。感谢您的快速回复和良好的信息。
var output = []
$('.grab').each(function(index) {
var obj = {}
obj[$(this).attr('name')] = $(this).val()
output.push(obj)
})
var output = $('.grab').map(function() {
var obj = {}
obj[$(this).attr('name')] = $(this).val()
return obj
})
function form2JSON(form){
var info_ser = $('#'+form).serialize();
var data = info_ser.split('&');
var output = {};
$.each( data, function( i, l ){
var data_input = l.split('=');
output[data_input[0]] = data_input[1];
});
return output;
}