2015-03-25 4 views
0

Что не так? Консоль говорит, что undefined не является функцией.Мой простой jquery не работает

var Input = $('#Formular :input'); 
for(i =0; i<Input.length; i++){ 
    Input[i].val(Daten[x-1][i]); 
} 
+2

Что линия не указывает в качестве источника ошибки? Возможно, вы забыли включить jQuery, а $ не определено. – doldt

+0

Вероятно, потому что 'var Input = $ ('# Formular: input');' В этом $ не определено –

+1

'Input [i]' - это объект 'DOM', который не имеет' val' So, вам, возможно, придется сделать 'Input [я] .value = "что-то"' – lshettyl

ответ

2

.val() функция JQuery, но вы используете его на элемент DOM.

Вы видите, что при выполнении Input[i] вы получаете элемент HTML, а не объект jQuery, содержащий этот элемент.

Вы либо использовать ваниль JS способ изменить значение:

Input[i].value = Daten[x-1][i]; 

Или использовать .eq, чтобы получить элемент в объекте JQuery:

Input.eq(i).val(Daten[x-1][i]); 

Вы также мог бы использовать .each из JQuery:

var Input = $('#Formular :input').each(function(i){ 
    this.value = Daten[x-1][i]; 
}); 
0

Ввод уже назначается в переменную ввода , а в цикле for вы не можете получить доступ к функции .val(), используя эту переменную. Вместо этого вам необходимо присвоить значение, используя:

Input[i].value =Daten[x-1][i]; 
0

Итак, расширяя то, что я сказал в своих комментариях, вы могли бы сделать следующее.

//jQuery 
var Inputs = $('#Formular :input'); 
Inputs.each(function(i){ 
    $(this).val("someval-" + i); 
    //$(this).val(Daten[x-1][i]); 
}); 

//Javascript (+ a bit of jQuery, the way you did) 
var Inputs = $('#Formular :input'); 
for(i =0; i<Inputs.length; i++){ 
    Inputs[i].value = "some--val-" + i; 
} 

Take a look at the demo.