반응형
간격이 실행 중인지 확인하고 그 반대의 경우
그래서 저는 기본적인 인증이 가능한 웹 앱을 가지고 있습니다.
로그인하면 Interval이 설정됩니다.
$("#login").click(function(e) {
var interval = setInterval(function(){myFunction();}, 2000); });
그런 다음 로그아웃할 때 간격을 중지해야 합니다.
$("#logout").click(function(e) {
if(typeof interval !== 'undefined') clearInterval(interval); });
하지만 작동하지 않습니다. 인터벌이 존재하는지 확인하는 방법이 잘못된 것 같습니다... 로그인할 때 실행되도록 인터벌을 설정할 수는 있지만 로그아웃 버튼을 클릭하면 중지/삭제해야 합니다...
추신. 2초마다 자동으로 "내 기능"을 확인하기 위해 인터벌을 사용하고 있지만 인터벌 없이 이를 수행할 수 있는 다른 방법이 있을까요? thx
당신의.interval
변수는 두 함수 모두에서 사용 가능한 상위 범위에서 선언해야 합니다.현재 사용 중인 것처럼 이벤트 핸들러 함수의 특정 호출 내에만 존재하는 로컬 변수입니다.따라서 다음 이벤트 핸들러가 호출되면 해당 이전 변수는 더 이상 존재하지 않습니다.로그인 시 클릭이 연속되지 않도록 보호해야 할 수도 있습니다.
var interval;
$("#login").click(function(e) {
if (!interval) {
interval = setInterval(function(){myFunction();}, 2000);
}
});
$("#logout").click(function(e) {
clearInterval(interval);
interval = null;
});
그리고 당신이 확인할 필요는 없어요.interval
가undefined
. 그냥 전화하면 됩니다.clearInterval()
그 위에 그리고clearInterval()
당신이 통과시키는 잘못된 논쟁으로부터 보호해 줄 것입니다
다음은 두 클릭 이벤트에 대해 인터벌 변수가 글로벌 범위에 있어야 하는 간단한 예입니다.
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
function myFunction(){
var d = new Date();
var t = d.toLocaleTimeString();
document.getElementById("demo").innerHTML = t;
}
var interval;
$("#start").click(function(){
interval = setInterval(function(){
myFunction();
},2000);
});
$("#stop").click(function(){
clearInterval(interval);
});
});
</script>
</head>
<body>
<p id="demo"></p>
<button id="start">Start</button>
<button id="stop">Stop</button>
</body>
</html>
언급URL : https://stackoverflow.com/questions/34805296/check-if-an-interval-is-running-and-viceversa
반응형
'programing' 카테고리의 다른 글
CSS에서 첫번째 문자 대문자 만들기 (0) | 2023.09.06 |
---|---|
Powershell에서 공백 문자가 가변적인 분할 문자열 (0) | 2023.09.06 |
Android에서 네트워크 연결 유형 검색 (0) | 2023.09.01 |
모바일 레이아웃에서 부트스트랩 3 열 순서를 변경하려면 어떻게 해야 합니까? (0) | 2023.09.01 |
Android - "뒤로" 버튼을 무시하여 활동이 종료되지 않도록 하는 방법은 무엇입니까? (0) | 2023.09.01 |