Javascript 迭代jQuery$(this.attr(';class';).split(";)会得到奇数结果

Javascript 迭代jQuery$(this.attr(';class';).split(";)会得到奇数结果,javascript,jquery,css,arrays,iteration,Javascript,Jquery,Css,Arrays,Iteration,我有一个页面,我试图为共享一个公共类的许多div获取类数组。例如: <div class="common lorem ipsum"></div> <div class="common dolor sit"></div> <div class="common hello world"></div> 查看第一个生成的类变量得出以下结论: classes: Array (3) 0: "common" 1: "lorem" 2:

我有一个页面,我试图为共享一个公共类的许多div获取类数组。例如:

<div class="common lorem ipsum"></div>
<div class="common dolor sit"></div>
<div class="common hello world"></div>
查看第一个生成的
变量得出以下结论:

classes: Array (3)
0: "common"
1: "lorem"
2: "ipsum"
length: 3
__proto__: Array

问题是(类中的var i)的
似乎正在迭代
\uuuuu proto\uuuuu
数组并深入研究它-以前有人遇到过这种情况吗?我使用的是最新版本的Chrome(6.0.453.1)。

for(var I=0,l=classes.length;I@meder正确回答了您的问题,我只想补充一点,如果枚举的顺序不重要,您可以始终使用以下简化形式:

for ( var i = classes.length; i--; ) {
  alert( classes[i] );
}

它更短、更快。

要添加到其他有效答案中,因为您已经在使用jQuery,您可以利用
jQuery。每个

$.each(classes, function (i, cls) {
    alert(cls);
});
我见过这个

我不确定
(我在这里)
仔细检查
0-n
删除了什么

var thisp=arguments[1];
for(var i=0,len=this.length;i
添加到meder的答案中

有一种方法可以安全地对对象进行迭代,而不会被对象的继承属性所困扰。因此:

for(var i in classes) {
  if (classes.hasOwnProperty(i)) {
    var safeValue = classes[i];
  }
}

+1避免gotchas:)还要注意,for..in不能保证以数字顺序访问索引(请参见)true,幸运的是,这不是问题,ECMAScript 5还将以本机方式支持
Array.forEach()
,谢谢meder,这正是我想要的。现在我知道了!或者如果你想更快,可以使用一个负while循环。这是一行代码,几乎没有任何好处。这里真正的问题是可读性。此表单在每个字段都很好。此
检查中的
i是因为。从0到
长度
的每个整数实际上都是数组的一个元素,这并不一定是真的。
$.each(classes, function (i, cls) {
    alert(cls);
});
for(var i in classes) {
  if (classes.hasOwnProperty(i)) {
    var safeValue = classes[i];
  }
}