2013-05-14 110 views
1

爲什麼每個語句都會導致我的代碼中斷?我也必須用JavaScript設置索引?Foreach循環javascript失敗

var email = []; 

email['update'] = true; 
email['e_case_id'] = $("#e_case").val(); 

var i = 0; 

$.each($('.rowChecked'), function() { 
    email['e_attachments'][i] = $(this).attr('id'); 
    i++; 
}); 
+0

你是否在控制檯中發現錯誤?另外,每個函數都可以使用索引,值,所以你甚至不需要那裏的i ++。只聲明函數(i,v){...} –

+0

Javascript不支持關聯數組。所以你不能簡單地做'email''update'] = true;'正如在下面的一些答案中所討論的那樣,你可以使用像關聯數組這樣的文字對象:'myLiteralObject = {}; myLiterObject [「associativeStyleKey」] =「whatever」;' – Dropzilla

+0

@Mike:實際上它會工作,因爲'Array'也是一個對象。 – Claudiu

回答

8

首先,email應該是一個對象文本,而不是一個數組文本:

var email = {}; 

其次,你沒有定義email['e_attachments']你試圖使用它之前。這可能是阻止它工作的原因。嘗試加入

email['e_attachments'] = []; 

之前$.each


您可以在此情況下使用$.map,順便說一句。那就是:

email['e_attachments'] = $.map($('.rowChecked'), function (el) { 
    return $(el).attr('id'); 
}); 

而不是你的$.each。或更好:

email['e_attachments'] = $('.rowChecked').map(function() { 
    return $(this).attr('id'); 
} 
+0

這個作品很好吃,我不熟悉$ .map - 謝謝 – amof