大家好我在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时)你能告诉我什么是错的吗?
答案 0 :(得分:1)
var id = findNext(1, i);
赋值在i=2
时返回3。
请参阅此链接:http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/
答案 1 :(得分:1)
在函数place
内的主循环中,定义全局变量i
。您在findNext
内执行相同操作,从而覆盖原始i
变量。使用i
关键字定义var
,以便只能在创建它的范围内访问。
for (var i = 0; i <= items; i++) {