Javascript 迭代jQuery$(this.attr(';class';).split(";)会得到奇数结果
我有一个页面,我试图为共享一个公共类的许多div获取类数组。例如: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 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];
}
}