2016-09-30 11 views
1

リンクをクリックした後、正確な要素までスクロールするためのページを作成します。しかし、それをクリックすると、ページの終わりまでスクロールし、スクロールしようとするとスクロールします。JavaScript clearIntervalが機能しません

これは、私の機能でclearInterval()が機能していないことを意味しています。 "なぜ ?"ここで

は関数である。

function smoothScr() { 
 
    \t var elem = document.getElementById("main"); 
 
    \t var elemPos = elem.getBoundingClientRect().top; 
 
    \t var i = 0; 
 
    \t var changePos = setInterval(changingPos, 10); \t 
 

 
    \t function changingPos() { 
 
    \t \t if (elemPos == 0) { \t \t \t \t \t 
 
    \t \t clearInterval(changePos); 
 
    \t \t } else { \t 
 
    \t \t \t i++; 
 
    \t \t \t window.scrollBy(0, i); 
 
    \t \t }; 
 
    \t } 
 
    }

+1

なぜアンカーを使用しないのですか? –

+6

'elemPos'は' smoothScr'を呼び出すときに一度だけ定義されます。自動的には更新されません。 'changingPos'で値を変更しなければなりません。 – Teemu

+0

あなたのケースの 'window.scrollBy'は1ps、2px、3pxなどのようにスクロールする必要があります。これを 'window.scrollBy(0、1)'に変更してみてください。 – serge1peshcoff

答えて

0

代わりの

if (elemPos == 0) 

あなたはあなたでは

if (elem.getBoundingClientRect().top == 0) 

を使用する必要があります例えば、elemPosは初期値から決して変化しません。

+0

まあ、それは助けにはなりません:| | –

+0

console.log(elem.getBoundingClientRect()。top)を実行して、0にならない理由を確認します。コンソールの値を確認して、問題の内容を確認します。 –

関連する問題