1 回答

TA貢獻(xiàn)1998條經(jīng)驗 獲得超6個贊
setInterval()中傳入的 tog 是一個引用,引用的是一開始的函數(shù)
后來給 tog 重新賦值,所以它引用的函數(shù)變量了,但是 setInterval() 中仍然使用的仍然是原來那個函數(shù)……
把 setInterval(tog, 100) 改成 setInterval(function() { tog(); }, 100); 就好
不過我估計你是想制造閃爍的效果,但是有兩個問題沒處理
show 之后沒有把 tog 賦值成 hide 的處理函數(shù)
沒有停止的邏輯
寫個示例:
//顯示、隱藏
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);
添加回答
舉報