자바스크립트에서 10초마다 함수를 호출하기 위해 setInterval(fname, 10000);
을 사용하고 있습니다. 어떤 이벤트에서 호출을 중지할 수 있나요?
사용자가 데이터의 반복적인 새로 고침을 중지할 수 있기를 원합니다.
setInterval()은 간격 ID를 반환하며, 이를
clearInterval()`에 전달할 수 있습니다:
var refreshIntervalId = setInterval(fname, 10000);
/* later */
clearInterval(refreshIntervalId);
setInterval()](https://developer.mozilla.org/en/DOM/window.setInterval) 및 [
clearInterval()`](https://developer.mozilla.org/en/DOM/window.clearInterval)에 대한 문서를 참조하세요.
setInterval의 반환값을 변수로 설정한 경우
clearInterval`을 사용하여 중지할 수 있습니다.
var myTimer = setInterval(...);
clearInterval(myTimer);
새 변수를 설정하고 실행될 때마다 ++(하나씩 카운트업)로 증가하도록 한 다음 조건문을 사용하여 종료할 수 있습니다:
var intervalId = null;
var varCounter = 0;
var varName = function(){
if(varCounter <= 10) {
varCounter++;
/* your code goes here */
} else {
clearInterval(intervalId);
}
};
$(document).ready(function(){
intervalId = setInterval(varName, 10000);
});
나는 그것이 도움이되고 그것이 옳기를 바랍니다.
이 얼마나, 어떻게 처리할 것이라고 답을 이미 setInterval 핸들을 되돌려줍니다 그들위에 취소하려면 Interval timer 사용됩니다.
일부 아키텍처상의 고려사항입니다:
Scope-less", " 사용하지 마십시오. 변수. 가장 안전한 방법은 속성을 사용하여 DOM 객체에는 있다. 가장 쉬운 약간만이라도 배치하십시오 document" ";). 버튼, 시작 / 정지점을 시작됨인 경우 자체적으로 버튼을 통해 쉽게 찾아볼 수 있습니다.
<a onclick="start(this);">Start</a>
<script>
function start(d){
if (d.interval){
clearInterval(d.interval);
d.innerHTML='Start';
} else {
d.interval=setInterval(function(){
//refresh here
},10000);
d.innerHTML='Stop';
}
}
</script>
이미 답변됨. 하지만 서로 다른 여러 작업을 하는 경우 그 이름을 올린 타이머, 재사용 가능한 는 주로 내 타스크티머 (노드에 대해 및 브라우저) 사용할 수 있습니다.
// Timer with 1000ms (1 second) base interval resolution.
const timer = new TaskTimer(1000);
// Add task(s) based on tick intervals.
timer.add({
id: 'job1', // unique id of the task
tickInterval: 5, // run every 5 ticks (5 x interval = 5000 ms)
totalRuns: 10, // run 10 times only. (omit for unlimited times)
callback(task) {
// code to be executed on each run
console.log(task.name + ' task has run ' + task.currentRuns + ' times.');
// stop the timer anytime you like
if (someCondition()) timer.stop();
// or simply remove this task if you have others
if (someCondition()) timer.remove(task.id);
}
});
// Start the timer
timer.start();
이 경우 사용자가 데이터 갱신 방해하지 경우 클릭. '다음' 티머트레스메 티머스파우스 호출할 수도 있습니다 () ' ()' 를 하는 경우 재활성화할.
참조 더 여기서요.
@cnu,
간격 전에 막을 수 있는 코드를 실행할 때 여바바 ur 콘솔입니다 시도하시겠습니까 브라우저 (F12). 셀명 시도하시겠습니까 클라인터발 (트리거할) 는 콘솔 아닌 한번 눈을 아름답게? P
확인란 예제 소스:
<! - begin 스니핏: js 숨기십시오: > 거짓값 -;
var trigger = setInterval(function() {
if (document.getElementById('sandroalvares') != null) {
document.write('<div id="sandroalvares" style="background: yellow; width:200px;">SandroAlvares</div>');
clearInterval(trigger);
console.log('Success');
} else {
console.log('Trigger!!');
}
}, 1000);
<div id="sandroalvares" style="background: gold; width:200px;">Author</div>
끝 - < 스니핏 >;!
이 방법을 사용할 수 있습니다 () 로 설정된 setInterval 클라인터발 선택해제합니다 타이머 () 메서드입니다.
setInterval 항상 ID 값을 반환한다. 이 값은 통과될 수 있도록 클라인터발 () 를 정지점을 타이머 (timer). 타이머 0 부터 중됩니다 상태가 되면 30 의 예를 들어보겠습니다.
let time = 30;
const timeValue = setInterval((interval) => {
time = this.time - 1;
if (time <= 0) {
clearInterval(timeValue);
}
}, 1000);
돌아온 너희가운데 변수를 할당 값을 setInterval (.) 반드시 지정된 변수를 클라인터발 ();
예:
var timer, intervalInSec = 2;
timer = setInterval(func, intervalInSec*1000, 30 ); // third parameter is argument to called function 'func'
function func(param){
console.log(param);
}
$('.htmlelement').click( function(){ // any event you want
clearInterval(timer);// Stops or does the work
});
var keepGoing = true;
setInterval(function () {
if (keepGoing) {
//DO YOUR STUFF HERE
console.log(i);
}
//YOU CAN CHANGE 'keepGoing' HERE
}, 500);
또한 정지점을 이벤트 리스너를 let& # 39 라고 버튼을 추가하여 시간 간격까지입니다, s 가 stop-interval" ";:
$('buuton#stop-interval').click(function(){
keepGoing = false;
});
HTML:
<button id="stop-interval">Stop Interval</button>
참고: 시간 간격까지입니다 계속 실행할 어쨌든요 아무런 일도 일어나지 않습니다
This is how I () 메서드를 사용하여 클라인터발 정지점을 타이머 (timer) 10 초 후에.
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
function startCountDown() {
var countdownNumberEl = document.getElementById('countdown-number');
var countdown = 10;
const interval = setInterval(() => {
countdown = --countdown <= 0 ? 10 : countdown;
countdownNumberEl.textContent = countdown;
if (countdown == 1) {
clearInterval(interval);
}
}, 1000)
}
<head>
<body>
<button id="countdown-number" onclick="startCountDown();">Show Time </button>
</body>
</head>
끝 - < 스니핏 >;!
아무것도 하지 않고 단순히 시간 간격까지입니다 클래스용 추가하기에서는 있다는 것을 말한다. 예를 들면 다음과 같습니다. 위에 있는.
<! - begin 스니핏: js 숨기십시오: > 거짓값 -;
var i = 0;
this.setInterval(function() {
if(!$('#counter').hasClass('pauseInterval')) { //only run if it hasn't got this class 'pauseInterval'
console.log('Counting...');
$('#counter').html(i++); //just for explaining and showing
} else {
console.log('Stopped counting');
}
}, 500);
/* In this example, I'm adding a class on mouseover and remove it again on mouseleave. You can of course do pretty much whatever you like */
$('#counter').hover(function() { //mouse enter
$(this).addClass('pauseInterval');
},function() { //mouse leave
$(this).removeClass('pauseInterval');
}
);
/* Other example */
$('#pauseInterval').click(function() {
$('#counter').toggleClass('pauseInterval');
});
body {
background-color: #eee;
font-family: Calibri, Arial, sans-serif;
}
#counter {
width: 50%;
background: #ddd;
border: 2px solid #009afd;
border-radius: 5px;
padding: 5px;
text-align: center;
transition: .3s;
margin: 0 auto;
}
#counter.pauseInterval {
border-color: red;
}
<!-- you'll need jQuery for this. If you really want a vanilla version, ask -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="counter"> </p>
<button id="pauseInterval">Pause</button></p>
끝 - < 스니핏 >;!