2013-03-09 54 views
0

首先是小型的javascript腳本:使用javascript設置的時間間隔增量變量?這一切

f = 1 
$(".thumb").hover(function() { 
     intervalId = setInterval($(this).text(f++), 400)); 
    }); 

林試圖讓.thumb文本增加,而用戶莫伊茲超過它,它,當我徘徊之後再次懸停,但增加了我想要在用戶懸停在元素頂部時增加。

+0

請更清楚地解釋你的問題。我不明白你的意思是什麼,「當我徘徊並且再次盤旋時,它會增加,但是當用戶在元素上方徘徊時,我想增加。」 – 2013-03-09 05:47:25

+0

我認爲他的意思是他希望數字在鼠標移過它時不斷增加,但每次將鼠標移到它上面時它只會增加一次。我理解正確嗎? – 2013-03-09 05:48:08

+0

是啊@AdamPlocher我想不斷增加! – unknown 2013-03-09 05:51:08

回答

1

你將不得不實際功能傳遞給setInterval()這樣的:

f = 1 
$(".thumb").hover(function() { 
     var self = $(this); 
     intervalId = setInterval(function() {self.text(f++)}, 400)); 
    }); 

你在做你原來的代碼是什麼使呼叫$(this).text(f++)其立即執行,以setInterval()的結果。由於該函數沒有返回函數,因此setInterval()沒有回調函數,因此沒有任何內容在間隔上運行。


如果你也想停下來當你停止徘徊區間,那麼你可以這樣做:

var f = 1; 
var intervalId; 
$(".thumb").hover(function() { 
    var self = $(this); 
    if (intervalId) { 
     clearInterval(intervalId); 
    } 
    intervalId = setInterval(function() {self.text(f++)}, 400)); 
}, function() { 
    f = 1; 
    clearInterval(intervalId); 
    intervalId = null; 
}); 
+0

謝謝@ jfriend00,它的工作:) – unknown 2013-03-09 05:58:42

+0

這不會停止時,用戶鼠標懸停,並再次觸發,並開始更快時,有多個鼠標懸停。 – MattDiamant 2013-03-09 06:02:29

+0

@MattDiamant - 是的,如果這是他們想要的行爲,則OP需要延長其代碼以停止懸停停止的時間間隔。我不知道OP在尋求幫助。我已將該選項添加到我的答案中。 – jfriend00 2013-03-09 06:04:41

0

這個工作,但也有可能是一個更簡單的方法:

<script> 
var f = 1 
var intervalId; 
var started = false; 

$(".thumb").hover(function() { 
    started = true; 
    }, 
    function() { 
    started = false; 
    }); 

    intervalId = setInterval(incrementDiv, 400); 

    function incrementDiv() { 
    if (started) { 
     $(".thumb").text(f++); 
    } 
    } 
</script> 

當鼠標懸停在元素上時,這將開始增加數值,並在鼠標光標移開時停止。

2

嘗試:

var f = 1, 
    intervalId; 

$(".thumb").hover(function() { 
    $this = $(this); 
    intervalId = setInterval(function() { 
     $this.text(f++); 
    }, 100); 
}, function() { 
    clearInterval(intervalId); 
}); 

小提琴here

1

這裏是一個小提琴,你想要做什麼:http://jsfiddle.net/2pdnP/

var f = 1; 
var intervalId = null; 
$(".thumb").hover(function() { 
    var self = this; 
    intervalId = setInterval(function() {$(self).text(f++)}, 400); 
}, function() { 
    clearInterval(intervalId); 
}); 

你需要有intervalId您hoverIn範圍之外定義,然後在您懸停時停用它。