जवाबों:
setInterval()
एक अंतराल आईडी देता है, जिसे आप पास कर सकते हैं clearInterval()
:
var refreshIntervalId = setInterval(fname, 10000);
/* later */
clearInterval(refreshIntervalId);
के लिये दस्तावेज देखें setInterval()
और clearInterval()
।
clearInterval
। मैंने window.refreshIntervalId
एक स्थानीय चर के बजाय उपयोग किया है , और यह बहुत अच्छा काम करता है!
$('foo').data('interval', setInterval(fn, 100));
और फिर इसे साफ़ करने के साथ clearInterval($('foo').data('interval'));
मुझे यकीन है कि ऐसा करने के लिए एक गैर-jQuery तरीका है, भी।
यदि आप 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);
});
मुझे उम्मीद है कि यह मदद करता है और यह सही है।
clearInterval(varName);
। मुझे उम्मीद clearInterval
है कि जब फ़ंक्शन नाम पारित हुआ तो मैं काम नहीं करूंगा, मुझे लगा कि इसे अंतराल आईडी की आवश्यकता है। मुझे लगता है कि यह केवल तभी काम कर सकता है जब आपके पास एक नामित फ़ंक्शन हो, क्योंकि आप एक अनाम फ़ंक्शन को स्वयं के अंदर एक चर के रूप में पारित नहीं कर सकते हैं।
$(document).ready(function(){ });
jQuery है, इसीलिए यह काम नहीं करता है। इसका उल्लेख कम से कम किया जाना चाहिए।
varName
, जो एक अनाम फ़ंक्शन को स्टोर करता है - wha ?? आपको इस जवाब को, IMHO को बदलना या नीचे ले जाना चाहिए।
ऊपर दिए गए उत्तर पहले ही बता चुके हैं कि कैसे सेटइंटरवाल एक हैंडल देता है, और कैसे इस हैंडल का उपयोग इंटरवल टाइमर को रद्द करने के लिए किया जाता है।
कुछ वास्तु विचार:
कृपया "गुंजाइश-कम" चर का उपयोग न करें। सबसे सुरक्षित तरीका एक DOM ऑब्जेक्ट की विशेषता का उपयोग करना है। सबसे आसान स्थान "दस्तावेज़" होगा। यदि रिफ्रेशर स्टार्ट / स्टॉप बटन द्वारा शुरू किया जाता है, तो आप स्वयं बटन का उपयोग कर सकते हैं:
<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>
चूंकि फ़ंक्शन बटन क्लिक हैंडलर के अंदर परिभाषित है, इसलिए आपको इसे फिर से परिभाषित करने की आवश्यकता नहीं है। बटन को फिर से क्लिक करने पर टाइमर को फिर से शुरू किया जा सकता है।
document
पर की तुलना में window
?
पहले से ही उत्तर दिया गया है ... लेकिन अगर आपको एक विशेष, फिर से उपयोग करने योग्य टाइमर की आवश्यकता है जो विभिन्न अंतरालों पर कई कार्यों का समर्थन करता है, तो आप मेरे टास्कटीमर (नोड और ब्राउज़र के लिए) का उपयोग कर सकते हैं ।
// 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();
आपके मामले में, जब उपयोगकर्ता डेटा-ताज़ा करने के लिए परेशान करते हैं; आप timer.pause()
तब भी कॉल कर सकते हैं, timer.resume()
यदि उन्हें पुनः सक्षम करने की आवश्यकता हो।
देखें और अधिक यहाँ ।
ClearInterval () विधि का उपयोग setInterval () विधि के साथ टाइमर सेट को साफ़ करने के लिए किया जा सकता है।
setInterval हमेशा एक ID मान लौटाता है। टाइमर को रोकने के लिए यह मान ClearInterval () में पारित किया जा सकता है। यहां टाइमर का एक उदाहरण 30 से शुरू होता है और 0 हो जाने पर रुक जाता है।
let time = 30;
const timeValue = setInterval((interval) => {
time = this.time - 1;
if (time <= 0) {
clearInterval(timeValue);
}
}, 1000);
@cnu,
जब आप उर कंसोल ब्राउज़र (F12) देखने से पहले रन कोड की कोशिश करते हैं, तो आप अंतराल को रोक सकते हैं ... टिप्पणी साफ़ करने की कोशिश करें (ट्रिगर) फिर से एक कंसोल दिख रहा है, ब्यूटिफायर नहीं? : पी
उदाहरण का स्रोत देखें:
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>
वैरिएबल वैरिएबल को असाइन करने के लिए सेट करेंइंटरवल (...) से लौटा दिया गया और क्लीयर किए गए वैरिएबल को क्लियरइंटरवल () में पास करें;
जैसे
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);
आप इवेंट श्रोता को जोड़कर अंतराल को रोक सकते हैं, आइए "आईडी-स्टॉप-अंतराल" के साथ एक बटन कहने दें:
$('buuton#stop-interval').click(function(){
keepGoing = false;
});
HTML:
<button id="stop-interval">Stop Interval</button>
नोट: अंतराल अभी भी निष्पादित किया जाएगा, हालांकि कुछ भी नहीं होगा।
इस तरह मैंने 10 सेकंड के बाद टाइमर को रोकने के लिए clearInterval () विधि का उपयोग किया।
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>
कुछ समय के बाद अंतराल को रोकने के लिए setTimeOut का उपयोग करें।
var interVal = setInterval(function(){console.log("Running") }, 1000);
setTimeout(function (argument) {
clearInterval(interVal);
},10000);
मुझे लगता है कि निम्नलिखित कोड मदद करेगा:
var refreshIntervalId = setInterval(fname, 10000);
clearInterval(refreshIntervalId);
आपने कोड 100% सही किया है ... तो ... समस्या क्या है? या यह एक ट्यूटोरियल है ...
बस एक वर्ग जोड़ें जो अंतराल को कुछ भी नहीं करने के लिए कहता है। उदाहरण के लिए: होवर पर।
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>
मैं उम्र के लिए इस तेज़ और आसान दृष्टिकोण की तलाश कर रहा हूं, इसलिए मैं कई संस्करणों को पोस्ट कर रहा हूं ताकि इसे अधिक से अधिक लोगों तक पहुंचाया जा सके।
this.setInterval(function() { if(!$('#counter').hasClass('pauseInterval')) { //do something } }, 500);
आप सभी कोड के लिए है। इसके अलावा, चेक पहली चीज है जो आप करते हैं, इसलिए जब यह मँडरा जा रहा हो तो यह बहुत हल्का होता है। यह वही है जो इसके लिए है: अस्थायी रूप से एक फ़ंक्शन को रोकना । यदि आप इसे अनिश्चित काल के लिए समाप्त करना चाहते हैं: बेशक आप अंतराल को हटा दें।