Во-первых, ваша переменная "questions" представляется как массив real .Однако вы помещаете внутри массива: , а не реальные массивы - это просто объекты со свойствами.
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)
});
(Обратите внимание, что я такжедобавили var
для переменной цикла "i" - важно!)
Теперь, что касается того, почему вещь пуста, я подозреваю, что это потому, что $('.Questions')
пусто.
Да, кроме того, это то, что вы могли бы использовать для jQuery API ".map ()":
$('#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);
});
Это немного приятнее, потому что обходит уродливую проблему переоценки $('.Questions')
на каждой итерации цикла.