假设id为'id2'的元素是具有以下条目的textarea:
a@123.com,b@123.com,c@123.com
当我运行时,我得到的值为0,1和2 - 为什么?
jQuery('#myid').submit(function() {
var temp = jQuery('#id2').serializeArray();
var email_arr = temp[0].value.split(',');
for (e in email_arr)
alert(e);
return false;
});
答案 0 :(得分:3)
由于for ... in
会迭代键而不是值,因此请改用alert(email_arr[e])
。
答案 1 :(得分:2)
因为e
包含对象的键。要获取该值,请使用email_arr[e]
。
实际上,使用for...in
迭代数组是不明智的,因为它不仅迭代集合中的项目,而且还包括自定义属性和方法的数组的所有成员。因此,只要有人延长Array
,您就会在for...in
循环中获得意外结果。例如,如果您使用的是IE7,并且想要使用Array.forEach()
,则必须将Array
扩展为recommended by MDC。扩展Array
后,您创建的每个数组都会有一个额外的属性,当您使用for...in
进行迭代时,该属性会显示。
相反,请使用Array.forEach()
。它解决了在循环遍历数组时可能出现的各种问题。这就是你要做的事情:
email_arr.forEach(function(email, index, list)
{
alert(email);
});
答案 2 :(得分:0)
不幸的是,在javascript中,for ... in ...循环的工作方式与python中的工作方式不同。 您的e变量实际上是在数组的“索引”(键)上循环。
您应该通过查看email_arr [e]来获得所需的结果。