2012-07-14 40 views
0

我有這個片段。因此,我看到一個錯誤:分配中的左側無效。jQuery循環與數組錯誤

var arr = [ "text1", "text2", "text3", "text4" ]; 
    jQuery.each(arr, function(index, value) { 
     this = jQuery("#sc-dialog ."+value).val(); 
}); 

有沒有人可以指出我如何解決這個問題? 謝謝。

這是一個UPDATE 我需要一個變量「文本」將有編號的循環:文本1,文本2,文字3 ...我做了這樣的:

var arr = [ "1", "2", "3", "4" ]; 
jQuery.each(arr, function(index, value) { 
     var text + index = jQuery("#sc-dialog .text"+value).val(); 
}); 

但我出現錯誤:意外的標識符。問題就在這裏:VAR文字+指數

+4

你不能指定'this'。你想做什麼? – 2012-07-14 10:22:09

+0

'this ='應該是什麼意思? – Trufa 2012-07-14 10:23:41

+0

你想做什麼?修改數組的每個條目? – odupont 2012-07-14 10:23:50

回答

0

把一個+你的變量名後,語法錯誤在你var聲明:

var text + index = jQuery("#sc-dialog .text"+value).val() 

一個有效的變量聲明將是任何一個變量名本身:

var text; 

或具有指定值的變量名稱:

var text = jQuery("#sc-dialog .text"+value).val(); 

被分配可以有一個+或者其他經營者在它的價值:

var x = y + z - 5 * (a + b); 

,並在單個var語句,您可以通過用逗號分隔的聲明帶有或不帶有值的多個變量

var i, j = 0, k, text = jQuery("#sc-dialog .text"+value).val(), x = 12 + 4; 

在標準for循環中實現同樣的功能時,遵循簡單模式的數組(數組元素索引加1)是毫無意義的。 編輯:從你的評論看來,你似乎不想處理循環內的值,你想存儲這些值供以後使用。你提到想要text1,text2等,但是如果你需要分別引用它們,聽起來你的各種textareas並不是一個真正的組,並且根本沒有必要在循環中處理它們。但是,如果你堅持,那麼你應該將值存儲在一個數組:

var i, 
    text = []; 
for (i = 1; i <=4; i++) { 
    text[i] = jQuery("#sc-dialog .text"+i).val(); 
} 
// later in your code 
// text[1] is first value, 
// text[2] is second value, etc 

注意JS數組索引是從零開始的,和數組.length比指數最高的一個,但你的領域的編號從1開始 - 請記住,如果您稍後循環訪問text陣列。

+0

感謝您的幫助和解釋,但我仍然有問題。變量:text1,text2,text3 ...我拉低了代碼。所以現在我得到如下錯誤:text1未定義。我想使用循環而不是爲每個textarea寫這個:var text1 = $(「#sc-dialog .text1」)。val(); var text2 = $(「#sc-dialog .text2」)。val(); \t \t var text3 = $(「#sc-dialog .text3」)。val();' – Vasili 2012-07-14 12:37:45

+0

如果您打算分別引用這些值,那麼使用循環是沒有意義的。這些textareas是用於不相關的目的嗎?在任何情況下,我已經更新了我的答案,以顯示用數組完成此操作的一種方法。 – nnnnnn 2012-07-15 00:20:01

+0

這工作完美。非常感謝您的幫助。 – Vasili 2012-07-15 20:09:38

1

嘗試這樣的:

jQuery.each(arr, function(index, value) { 
    arr[index] = jQuery("#sc-dialog ."+value).val(); 
}); 
0

不能使用「這個」作爲變量名。試着這麼做:

var arr = [ "text1", "text2", "text3", "text4" ]; 
    jQuery.each(arr, function(index, value) { 
     var dialogValue = jQuery("#sc-dialog ."+value).val(); 
}); 
+0

嘿,請查看我的問題更新 – Vasili 2012-07-14 11:22:32