2015-03-25 74 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 2015-03-25 12:38:28

+0

可能是因为'var Input = $('#Formular:input');'在这个$没有定义 – 2015-03-25 12:39:37

+1

'Input [i]'是没有'val'的DOM对象所以,你可能必须做'输入[I]。价值= “东西”' – lshettyl 2015-03-25 12:43:40

回答

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]); 

你也可以使用jQuery的.each

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.