代码如下$(function(){ $('.a').on('click',function(){ var counter=0 counter++ }) $('.b').on('click',function(){ if(counter>=3){ alert(大于3) } })})有2个按钮,a和b,点击a,变量counter会增加1。当b按钮点击的时候,如果变量counter大于等于3时,会弹出提示框。因为counter不是全局变量,每次点击之后会被销毁,所以每次counter都是1,如果用闭包,该怎么实现。再不使用全局变量的情况下,b按钮点击的函数中又应该怎么获得a按钮函数中的counter值。
2 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
一定要在上层作用域声明的,比如这样
$(function(){
(function() {
var counter = 0;
$('.a').on('click',function() {
counter++;
});
$('.b').on('click',function() {
if(counter > 3) {
alert('大于3');
}
});
})();
})
人到中年有点甜
TA贡献1895条经验 获得超7个赞
因为你用匿名函数包装了一层,所以在这个匿名函数内定义的局部变量,在子级函数中是有效的,即你应该:
$(function(){
var counter=0;
$('.a').on('click',function(){
counter++;
})
$('.b').on('click',function(){
if(counter>=3){
alert(大于3);
}
})
})
你原来对a的监听函数逻辑会导致counter永远是1,因为每次进入你都是初始化为0,然后加1的。
添加回答
举报
0/150
提交
取消