Javascript 尝试使用循环的结果并将其记录到控制台
我创建了一个循环来遍历数组并将结果输出到控制台,但我试图在文件的后面重用循环的结果,但它在控制台中始终显示为未定义,并且不确定我做错了什么?有人能在这个问题上给我一些指导吗。下面是我当前的代码。。。。非常感谢!!:)Javascript 尝试使用循环的结果并将其记录到控制台,javascript,jquery,arrays,loops,object,Javascript,Jquery,Arrays,Loops,Object,我创建了一个循环来遍历数组并将结果输出到控制台,但我试图在文件的后面重用循环的结果,但它在控制台中始终显示为未定义,并且不确定我做错了什么?有人能在这个问题上给我一些指导吗。下面是我当前的代码。。。。非常感谢!!:) //从HTML页面获取类名并将其放入数组中 var allClassNames=[]; var finalClassName=“”; $('[class]')。每个(函数(){ $.each($(this.attr('class')).split(''),function(i,cl
//从HTML页面获取类名并将其放入数组中
var allClassNames=[];
var finalClassName=“”;
$('[class]')。每个(函数(){
$.each($(this.attr('class')).split(''),function(i,className){
if(className.length&$.inArray(className,allClassNames)=-1){
所有className.push(className);
}
});
});
//循环遍历类名并将名称输出到控制台
var arr=所有类名;
对于(变量i=0;i
问题在于此时:
$("." + allClassNames.join(",.")).each(function(){
console.log( 'className = .' + arr[i] , [$(this).css(['top', 'left', 'width', 'height'])] );
});
i
等于arr.length
,因为它是在上面的for(var i…
循环中访问的最后一个值,因此打印的内容超出了arr[]数组的范围
为了说明这一点:
var arr = [0, 1, 2, 3, 4];
for (var i=0; i<arr.length; ++i) {
// ...
}
console.log(typeof arr[i] == 'undefined') // this will print true, because at this point i == 5 (arr.length)
我认为问题在于您没有在每个循环中声明变量I:
$("." + allClassNames.join(",.")).each(function(){
console.log( 'className = .' + arr[i] , [$(this).css(['top', 'left', 'width', 'height'])] );
});
试试这个:
var i=0代码>
$("." + allClassNames.join(",.")).each(function(){
console.log( 'className = .' + arr[i] , [$(this).css(['top', 'left', 'width', 'height'])] );
i++;
});
正如其他人提到的,您的i
变量在最后一个循环中是不相关的:
您可以使用此代码解决以下问题:
$("." + allClassNames.join(",.")).each(function(i,v){
console.log( 'className = .' + arr[i] , [$(v).css(['top', 'left', 'width', 'height'])] );
});
请注意,这个
现在被v
所取代。我认为您应该在$()中使用索引。each()
例如:
// OUTPUT CLASS NAMES AND CSS STYLING TO THE CONSOLE
$("." + allClassNames.join(",.")).each(function(index){
console.log( 'className = .' + arr[index] , [$(this).css(['top', 'left', 'width', 'height'])] );
});
注意匿名函数中的index
变量
.each(function(index){
console.log(index);
});
只需确保将index
变量放入匿名函数中即可
.each(function(index){
console.log(index);
});
我希望这能给你一些想法
以下是一些我认为有帮助的链接:
在这行console.log('className=.+arr[i]
中,您可能想从每个函数中获取i
,但您没有在其中传递任何内容。尝试编写每个(函数(i,v)
很好,你在回答中很好地解释了这个问题。但是你的答案在哪里?@Sachin正如我在回答中所说的那样,$(““+allClassNames.join(,”)
将找到的DOM元素与类名数组arr[]之间没有相关性
这将产生意外的结果,因为这里是i
是匹配这些类名的DOM元素的索引,而不是类名数组arr[]
.each(function(index){
console.log(index);
});