2015-03-25 108 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.