为什么长度不确定?

时间:2011-08-31 00:06:32

标签: javascript jquery

<div class="aa">
  <input type='radio' id="1" name='choices' value='1'/>
  <input type='radio' id ="2" name='choices' value='2'/>

  <input type='radio' id="3" name='choices1' value='3'/>
  <input type='radio' id="4" name='choices1' value='4'/>
</div>

的jQuery

$(".aa :radio").change(function() {

  var names = {};
  $('.aa :radio').each(function() { // find unique names
    names[$(this).attr('name')] = true;
  });
  var count = 0;
  $.each(names, function() { // then count them
    count++;
  });
  alert ("count " + count +  " length " + names.length); //names length comes up as undefined why?
}).change();

2 个答案:

答案 0 :(得分:4)

因为namesobject而不是array。在您的示例中,count将是对象名称中键的长度。

获取密钥的长度:

var count = 0;
for(var i in names) {
  count++;
} 
count; // length

或现代浏览器Object.keys(names).length

答案 1 :(得分:0)

Javascript对象没有length属性。只有数组才能做到。

如果您想知道对象中有多少个键,则必须循环使用它。看看这个问题的答案:

Length of a JavaScript object