2012-04-13 3 views
1

사용자가 한 링크를 클릭하여 페이지를 자동으로 내려 읽기 시작을 쉽게 할 수있는 페이지가 있습니다. 사용자가 스크롤을 멈추기 위해 클릭하는 또 다른 링크가 있습니다. 전자는 완벽하게 작동하지만 후자는 페이지의 해당 위치에서 스크롤을 멈추는 대신 클릭 할 때 페이지가 맨 위로 돌아가도록합니다. 어떤 아이디어? 자동 스크롤 : 페이지 위로 돌아 가기 중지

function pageScroll() { 
    window.scrollBy(0,1); // horizontal and vertical scroll increments 
    scrolldelay = setTimeout('pageScroll()',50); // scrolls every 100 milliseconds 
} 
function stopScroll() { 
    clearTimeout(scrolldelay); 
} 

는 내가 다른 게시물에 읽은 어떤에서 두 번째 기능에 return false;를 추가하려고하지만, 도움이되지 않았다. 아무리해도 수익의 사용을 완전히 이해하지 못합니다. 어떤 도움을 주셔서 감사합니다.

+0

'scrolldelay' 변수는 다른 함수에서 액세스 할 수 없습니다. – hjpotter92

+0

왜 @ChasingDeath가 나에게 글로벌 한 것처럼 보입니까? – epascarello

+0

Hey @preahkumpii, 어떻게 이러한 함수를 호출하는지 보여줍니다. 콘솔에 오류가 있습니까? – epascarello

답변

8

난 당신이 같은 일을한다고 가정 : 다음과 같이

<a href="#" onclick="pageScroll();">start</a> 
<a href="#" onclick="stopScroll();">stop</a> 

가장 빠른 수정이 onclick 이벤트 핸들러에서 false를 반환하는 것입니다 :

<a href="#" onclick="pageScroll(); return false;">start</a> 
<a href="#" onclick="stopScroll(); return false;">stop</a> 

아이디어는 중지하는 것입니다 브라우저는 이벤트의 기본 동작을 수행하지 않습니다 (이 경우 페이지 상단으로 스크롤되는 #으로 이동). 요즘 더 현대적인 방법은 이벤트 핸들러 함수를 바인드 한 다음 e.preventDefault()을 사용하지만 return false;은 여전히 ​​이전 스타일의 이벤트 속성에 대해 작동합니다.

+0

대답을 감사하십시오. 완벽하게 일했습니다. 링크가 기본 액션으로 이동하는 것을 허용하지 않는다는 것에 대해 당신이 말한 것을 이해합니다.하지만'return false'는 어떻게 방지합니까? – preahkumpii

+0

실제로 "이유"는 없지만, 역사적으로 DOM은 이벤트 처리기가 (.preventDefault()가 도입되기 전에) 기본 동작을 취소 할 수 있도록 허용합니다.이 경우 핸들러 함수에서 false를 반환합니다 , 핸들러 함수는'onclick' 문자열입니다. –

+0

Gotcha, thanks. – preahkumpii

관련 문제