循环每个jQuery问题

时间:2013-11-04 17:11:08

标签: javascript jquery

我有这段代码:

var arrayInstSaude = new Array();
$("input[name='uniSaudePrj']:checked").each(function(){
    arrayInstSaude[$(this).val()]=$(this).val();
});

由于某种原因,它给了我一个混乱的数组。 例如:

  • 如果我检查1个元素值eq 1.它给出了arrayInstSaude长度等于2。
  • 如果我检查2个元素值eq 2.它给出了arrayInstSaude长度等于3。
  • 如果我检查3个元素值eq 5.它给出了arrayInstSaude长度等于6。
  • 如果我检查4个元素值eq 6.它给出了arrayInstSaude长度等于7。
  • 如果我检查5个元素值eq 7.它给出了arrayInstSaude长度等于8。

如果我为5个元素执行此操作:

for (var i = 1; i <=arrayInstSaude.length; i++) {
     alert(arrayInstSaude[i]);
}

我将有1,2,未定义,未定义,5,6,7,未定义,而预计有1,2,5,6,7。 有人知道发生了什么事吗? 谢谢!

3 个答案:

答案 0 :(得分:3)

阵列总是连续的 长度只是最高指数加一。

听起来你想要一个碰巧有数字键(而且没有长度)的常规对象。

答案 1 :(得分:0)

替换

for (var i = 1; i <=arrayInstSaude.length; i++) {
     alert(arrayInstSaude[i]);
}

for (var i in arrayInstSaude) {
     alert(arrayInstSaude[i]);
}

请考虑阅读此discussion by olliej

答案 2 :(得分:0)

我认为这段代码足够我的老板:

var arrayInstSaude = new Array();                
var k=0;
$("input[name='uniSaudePrj']:checked").each(function(){                    
    arrayInstSaude[k]=$(this).val();
    k++;
});

重要的是要观察长度是最高指数加1。因此,要检索我们可以使用的元素

for(k=0;k<arrayInstSaude.length;k++){
    alert(arrayInstSaude[k]);
}

因为我们知道最后一个元素是空的。