2013-05-14 73 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