大家好,我在jquery中有一小段代码,我有一个问题。似乎对于循环跳过第二个参数(当i = 2时),你能告诉我出了什么问题吗?
这是代码:
var items = $(".item").length;
var currentIndex = items;
place(currentIndex);
function place(index){
var s1 = Math.floor(items / 2);
for (i = 1; i <= items; i++){
(function(i, index){
if (i <= s1){
var id = findNext(1, i);
console.log("i = " + i + " > id = " + id);
} else if ( i > s1){
console.log("i = " + i);
}
})(i, index);
}
}
function findNext(index, times){
var result = index;
for (i = 1; i <= times; i++){
if (result == items){
result = 1;
} else {
result ++;
}
}
return result;
}
控制台输出显示以下内容:
i = 1 > id = 2
i = 3
i = 4
所以似乎对于循环跳过第二个参数(当 i = 2 时),你能告诉我出了什么问题吗?
在函数 place
的主循环中,定义一个全局变量i
。您可以在findNext
内部执行相同的操作,从而覆盖原始i
变量。使用 var
关键字定义i
,以便只能在创建它的作用域内访问它。
for (var i = 0; i <= items; i++) {
>var id = findNext(1, i);
作业在i=2
时返回 3。请参考此链接:http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/