在Javascript中的内联函数中将参数作为值传递
Passing a parameter as a value in an inline function in Javascript
当我在Javascript/jQuery中点击链接时,我试图让页面幻灯片滚动,但我不知道如何在绑定链接上点击事件的for
中传递for
循环的当前增量值作为参数。当我点击时,它会调用我定义的函数,但使用我的i
的当前值,而不是定义函数时的值。。。这是我的一些代码:
temp[0] = 0;
for(var i = 1; i < 8; i++) {
temp[i] = defaultPositions["slide" + i].top;
console.log(defaultPositions["slide" + i].top);
$('a.slide' + i).bind('click', function() {
$('html, body').animate({scrollTop:(defaultPositions['slide' + i].top / slidesScrollSpeed)}, 1000, function() {
parallaxScroll();
});
return false;
});
}
如何传递i
值,以便在单击链接时,每个链接都具有预期值,而不是全部为slide8
?
摘要:
for (var i=1;i<8;++i){
(function(i){
// Your code using `i` in callbacks here
})(i);
}
您的问题是,在所有闭包(为click
处理程序创建的匿名函数,即所有"关闭"函数外声明的i
的值)之间共享一个变量i
,因此,当该变量的值在循环中递增时,所有函数仍在引用相同的更新值。
通过将循环的主体包装在一个传递值i
的函数中,您可以在每次迭代中获得一个新的不同的变量i
,以便函数结束。为了更清楚地说明发生了什么,您可以将其写成:
for (var i=1;i<8;++i){
(function(slideNum){
// Your code using `slideNum` in callbacks here
})(i);
}
或者,您可以为闭包创建一个自定义变量,如下所示:
for (var i=1;i<8;i++){
var slideNum = 'slide'+i; // Create a new variable to use in the closure
temp[i] = defaultPositions[slideNum].top;
$('a.slide'+i).bind('click', function() {
$('html, body').animate({
scrollTop:(defaultPositions[slideNum].top/slidesScrollSpeed)
}, 1000, function() { parallaxScroll(); });
return false;
});
}
此外,请注意:;取决于CCD_ 11—你可能会将这条线简化为:
$('html, body').animate({
scrollTop:(defaultPositions[slideNum].top/slidesScrollSpeed)
}, 1000, parallaxScroll );
相关文章:
- 如何将参数赋予作为查询参数的参数值给定的函数
- 如何将输入范围的值传递给JS中的变量
- 如何将值传递给wicket中的javascript函数
- 将值传递给jquery创建的输入字段
- 需要将select标记选项值传递给ajax函数
- 使用Ajax将PHP值传递给javascript
- 将javascript值传递给PHP
- 将javascript值传递给php是正确的方法
- 将不属于表单的HTML页面中的值传递给php页面
- 字符串作为参数值放置时不会转换为大写
- Angular,将文本框的动态值传给控制器
- 在key up函数上将文本框值传递给javascript
- javascript将函数中一个变量的参数值传递给父函数中的另一个
- 可以't使用ajax调用将值传递给Web服务
- 如何在同一页面上使用windows.location.href将js值传递给php时停止刷新页面
- 在 Javascript 函数中对参数值使用特殊字符时出现 Javascript 错误
- 多个单选按钮,需要将选定的值传递给javascript
- 将参数值传递给javascript函数
- 使用自定义参数(数据)将动态参数(字段值)传递给Dynamics CRM上的webresource
- 如何检查传递给javascript函数的参数值是否为空?