1 回答
TA贡献1998条经验 获得超6个赞
setInterval()中传入的 tog 是一个引用,引用的是一开始的函数
后来给 tog 重新赋值,所以它引用的函数变量了,但是 setInterval() 中仍然使用的仍然是原来那个函数……
把 setInterval(tog, 100) 改成 setInterval(function() { tog(); }, 100); 就好
不过我估计你是想制造闪烁的效果,但是有两个问题没处理
show 之后没有把 tog 赋值成 hide 的处理函数
没有停止的逻辑
写个示例:
//显示、隐藏
var log = console.log.bind(console);
var timer = 0;
var tog = (function() {
var count = 0;
var current = hide;
function hide() {
// $(".box").hide();
log("hide");
current = show;
}
function show() {
// $(".box").hide();
log("show");
current = hide;
}
return function() {
if (count > 10) {
clearInterval(timer);
} else {
current();
count++;
}
};
})();
timer = setInterval(tog, 100);
添加回答
举报