javascript - 为什么长度显示为未定义?

标签 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();

最佳答案

因为names是一个对象而不是数组。在您的示例中,计数将是对象名称中键的长度。

获取键的长度:

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

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

关于javascript - 为什么长度显示为未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7251165/

相关文章:

javascript - 如何动态更改类 css 样式?

javascript - 使用 javascript 或 Angular js 转换数组

javascript - 在哪里实现 ng-click 函数、 Controller 或指令?

javascript - JSON 键作为 JavaScript 中的 JSON 值

Jquery slider CSS 问题

javascript - 将缩略图重定向到新 html 页面上的相应图像

php - jQuery 使用延迟加载插件从外部文件加载图像

javascript - 为什么在 dockerfile 中使用两次复制?

javascript - 将图标替换为 jqgrid 中的其他自定义图标

jquery - 使用 Fancybox 自动播放嵌入的 Youtube 视频