2012-08-09 63 views
3

在一個簡單的腳本,通過一些表單字段,獲取用戶輸入並將其存儲到數組中,我遇到了問題。Javascript/jQuery - 「無法調用未定義的方法」推送「雖然它被定義

它的工作原理,當我這樣做:

var q1A = parseFloat($('#q1-1').val()); 
if(isNaN(q1A)) { 
    var q1A = 0; 
} 
parameter.push(' '); 
answers.push(q1A); 

但現在我添加了,在這種情況下,應該簡單地存儲相同Q1A可變另一個數組。但不知何故,我最終得到一個「Uncaught TypeError」,聲明該變量是未定義的!新的代碼塊:

var q1A = parseFloat($('#q1-1').val()); 
if(isNaN(q1A)) { 
    var q1A = 0; 
} 
input.push(q1A); 
parameter.push(' '); 
answers.push(q1A); 

我登錄控制檯中的變量,它工作得很好,它的設置,並具有價值。任何想法爲什麼它說它是未定義的? 'answers'數組存儲值就好了。

在此先感謝!

編輯:

當然,我定義了變量。我只是沒有發佈那部分代碼...

var groups = new Array(); 
var questions = new Array(); 
var input = new Array(); 
var parameter = new Array(); 
var answers = new Array(); 
var amounts = new Array(); 
+3

「輸入」在哪裏定義? – dunc 2012-08-09 11:44:27

+1

'輸入'不是一個數組,你不能推送到任何變量,只能是先前定義的數組。 – adeneo 2012-08-09 11:44:38

+0

我定義了那些。現在將它添加到帖子中。 – Galadre 2012-08-09 11:46:54

回答

4

因爲它可能未定義的變量推到沒有錯誤的數組,這個問題必須是,當你嘗試調用push()它是input沒有定義。

這個問題的通常原因是,有另一個地方變量input被聲明,並且它從未初始化在意想不到的地方。

+0

這是關於輸入數組,答案正常工作。但不管它是哪一個,如果我刪除輸入數組,那麼一切正常。但是當我添加它時,函數在第一次進入該數組時立即停止。我只在函數的開頭聲明瞭一次數組。我試圖在jsfiddle中重新創建問題。 – Galadre 2012-08-09 12:06:20

+0

在你的代碼中搜索'var input';我相信你會發現至少有一個你不期望的結果。 – 2012-08-09 12:09:57

+0

Nope :(我會發布整個函數... – Galadre 2012-08-09 13:32:45

1

首先你必須定義爲數組。

var input=[]; 

然後嘗試推送該元素。

input.push(element); 
+1

我已經宣佈數組,只是沒有發佈的代碼的一部分。 – Galadre 2012-08-09 12:04:53

+1

編輯前我已經回答。 – 2012-08-09 12:35:48

相關問題