私は横にスクロールするページを作ります&マウスが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;
}
}
この問題に手を必要とする:/
として設定startScrollLeftとstartScrollRightを使用する必要があります? – glortho
これは野生の推測であり、したがってコメントですが、ユーザーがマウスを画面の右側に置いたままにすると、インターバルタイマーが作成されるように見えます。あなたの変数はローカル変数です。つまり、mousemoveがトリガーされるたびに新しいコピーが作成されます。 startScrollRight/startScrollLeftを割り当てる前に、変数をグローバルにして、常にクリアしてみてください。 –