I have problems with .stringify()
, but I think my JavaScript array must be wrong, here\'s my code:
var questions = new Array();
$(\'#Valid\').hover
First, your "questions" variable appears to be intended as a real array. What you're putting inside the array, however, are not real arrays — they're just objects with properties.
var questions = [];
$('#Valid').hover(function(){
for (var i=0;i < $('.Questions').length;i++){
questions[i] = {
'numero': $('.Numero:eq('+i+')').html(),
'question': $('.ItemInput:eq('+i+')').val(),
'variable': $('.VarName:eq('+i+')').val()
};
}
var stringJSON=JSON.stringify(questions)
alert (stringJSON)
});
(Note that I also added a var
for the "i" loop variable - important!)
Now, as to why the thing is coming up empty, well, I suspect it's because $('.Questions')
is coming up empty.
Oh and also, this is something you could use the jQuery ".map()" API for:
$('#Valid').hover(function() {
questions = $('.Questions').map(function(i, q) {
return {
'numero': $('.Numero:eq('+i+')').html(),
'question': $('.ItemInput:eq('+i+')').val(),
'variable': $('.VarName:eq('+i+')').val()
};
}).get();
var stringJSON = JSON.stringify(questions);
alert(stringJSON);
});
That's a little nicer because it gets around the ugly problem of re-evaluating $('.Questions')
on every iteration of the loop.