我想从javascript函数返回自定义json对象,我的代码如下
html
<input type='checkbox' name='chk[]' value='1'>1
<input type='checkbox' name='chk[]' value='2'>2
<input type='text' id='txt' value='' />
<input id='btn' type='button' value='click' />
JS
var json = {};
$('#btn').click(function(){
console.log(getdata());
});
function getdata(){
$('input:checked').each(function(i){
json.chk = $(this).val();
//json.chk.push({"val": $(this).val()}); gives error Uncaught TypeError: Cannot call method 'push' of undefined
});
json.txt = document.getElementById("txt").value;
return json;
}
我需要结果如下
{
chk: [{val: 1}, {val: 2}],
txt: 'test'
};
答案 0 :(得分:4)
您需要在json对象中定义chk变量。由于chk未定义,因此不知道它是一个数组。
var json = {};
$('#btn').click(function(){
console.log(getdata());
});
function getdata(){
json.chk = [];
$('input:checked').each(function(i){
json.chk.push({ val : $(this).val()});
});
json.txt = document.getElementById("txt").value;
return json;
}
答案 1 :(得分:2)
chk未定义为数组,您需要先将其定义为数组,然后将值推送到数组中。
var json = {};
$('#btn').click(function(){
console.log(getdata());
});
function getdata(){
$('input:checked').each(function(i){
if(json.chk)
{
json.chk.push({val:$(this).val()})
}
else
{
json.chk=[];
json.chk.push({val:$(this).val()})
}
});
json.txt = document.getElementById("txt").value;
return json;
}