所以我想讓一個頁面水平滾動左&正確的時候鼠標移動100px接近瀏覽器窗口的邊緣。我寫了下面的腳本,但它拒絕清除鼠標移動到頁面中間的時間間隔。javascript clearInterval問題
編輯:抱歉不粘貼整個js在這裏,startScrollLeft和..Right已經定義爲全局變量。我做了一個虛擬頁面here。你可以檢查頁面以及我的代碼是如何工作的。
$(document).mousemove(function(e){
var cursorX = e.pageX;
if (cursorX > windowW - 100){
startScrollLeft = setInterval(scrollLeft, 50);
}else {
clearInterval(startScrollLeft);
}
if (cursorX < 100){
startScrollRight = setInterval(scrollRight, 50);
}else{
clearInterval(startScrollRight);
}
});
var scrolledAmount = 20;
function scrollLeft(){
if($('.content').width() > scrolledAmount + contentW + windowW - 400){
$('.content').animate({
left: '-='+20+'px'
},70, 'linear');
scrolledAmount = scrolledAmount+20;
}
}
function scrollRight(){
if(scrolledAmount > 20){
$('.content').animate({
left: '+='+20+'px'
},70,'linear');
scrolledAmount = scrolledAmount-20;
}
}
需要一隻手這個問題:/
哪裏contentW和windowW被設置和什麼是他們被設置爲? – glortho 2012-01-05 20:00:24
這只是一個瘋狂的猜測,因此是一個評論,但它看起來像是如果用戶將鼠標放在屏幕的右側,它將繼續製作間隔定時器。您的變量是本地變量,這意味着每次觸發鼠標移動時都會創建一個新副本。嘗試將變量設置爲全局變量,並在分配startScrollRight/startScrollLeft之前始終將其清除。 – 2012-01-05 20:00:45