将每个数组元素保存在for循环javascript中

时间:2014-02-04 09:28:18

标签: javascript arrays scroll

var boks = ['.menu-469', '.menu-471', '.menu-470'];
var element = ['#about', '#slider', '#afisha'];

for (var i = 0; i < 2; i++) {
    $('#main-menu li' + boks[i]).click(function() {
       $(window).scrollTo($(element[i]), 800);
       alert(element[i]);
    });
}

此代码始终滚动到我的示例中的最新数组元素#afisha。如何制作此类功能 - 当我点击#main-menu li.menu-469时,我的页面会向下滚动到#about,当我点击#main-menu li.menu-471时,它会向下滚动到#slider

提前致谢

1 个答案:

答案 0 :(得分:2)

当你的for循环结束时,i的值已经到达你的最后一个索引,所以你需要创建一个内部自执行函数(一个闭包)并传递i的实际值< / p>

for (var i = 0; i < 2; i++) {
    (function(i) {
       $('#main-menu li' + boks[i]).click(function() {
          $(window).scrollTo($(element[i]), 800);
          alert(element[i]);
       });
    }(i));
}