2010-07-29 30 views
0

我有这个我错过了什么吗?我的价值没有得到保存到我的数组

var selected = [] 
     $('#SelectBoxContainer .DDLs :selected').each(function (i, selected) 
     { 
      alert($(selected).val()); 
      selected[i] = $(selected).val(); 
     }); 

我的警报告诉我,它正在经历这个循环,让选择框的值。然而,一旦所有事情都说完了,我的“选择”阵列中就没有任何东西。

回答

5

您的回调函数定义了一个名为selected的局部变量,该变量隐藏了外部作用域中的selected变量。 selected[i] =中的selected是来自function (i, selected)selected,而不是selectedvar selected

重命名这两个变量中的一个以使其工作。

+1

宾果!我没有想过这个! +1 – Reigel 2010-07-29 01:29:50

+0

我甚至没有注意到这一点。我可以看到为什么它现在不起作用。 – chobo2 2010-07-29 04:02:59

0

你打开和关闭阵列,然后做无果而一些魔术......

它的晚,但VAR选择= [] $(“#SelectBoxContainer .DDLs:选择”)各< ..code ....> 真的没有结果。

尝试使数组,然后:selected.put($('#SelectBoxContainer))

换句话说,你不必

';'在'var selected = []'之后'

+1

这是什么?OP说它提醒了值......';'不是真的问题... – Reigel 2010-07-29 01:26:47

+0

通过一些讨厌的方式,它没有说'失踪';而如果下一行在[]后面开始则会执行此操作。我们有语法的原因 – fazo 2010-07-29 01:43:53

+0

Javascript(**不幸**)不需要';'s。在Javascript中使用 – deceze 2010-07-29 01:56:06

0

您如何期望同时使用名为“selected”的两个变量?改变你的函数的第二个参数的名称,以便它不影你试图写入阵列:

var selected = []; 
$('#SelectBoxContainer .DDLs :selected').each(function (i, item) 
{ 
    selected[i] = $(item).val(); 
}); 

您还可以使用,而不是与指数打扰阵列push方法:

selected.push($(item).val()) 
+0

我认为'索引'是为了在OP中。我猜..因为时不时':selected'将不会有相同的索引.. :)只是我的猜测.. – Reigel 2010-07-29 01:32:27

+0

@Reigel不,'i'是一个循环索引,始终从0开始,总是递增1每次迭代。 – deceze 2010-07-29 01:34:03

+0

@deceze哦?!我认为这是当前元素的索引...我的不好然后.. – Reigel 2010-07-29 01:58:07

相关问题