উত্তর:
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'));
আমি নিশ্চিত যে এটি করার একটি নন- জিকুয়ের উপায়ও রয়েছে।
আপনি যদি 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
যা একটি নামবিহীন ফাংশন সংরক্ষণ করে - ওয়াহা ?? আইএমএইচও, আপনার এই উত্তরটি পরিবর্তন করা উচিত নয় down
উপরের উত্তরগুলি ইতিমধ্যে ব্যাখ্যা করেছে যে কীভাবে সেটআইন্টারওয়াল একটি হ্যান্ডেল ফেরত দেয় এবং কীভাবে এই হ্যান্ডেলটি ব্যবধান টাইমার বাতিল করতে ব্যবহৃত হয়।
কিছু স্থাপত্য বিবেচনা:
দয়া করে "স্কোপ-কম" ভেরিয়েবলগুলি ব্যবহার করবেন না। সবচেয়ে নিরাপদ উপায় হল কোনও ডিওএম অবজেক্টের বৈশিষ্ট্যটি ব্যবহার করা। সবচেয়ে সহজ জায়গাটি "নথি" হবে। যদি রিফ্রেশারটি একটি স্টার্ট / স্টপ বোতাম দ্বারা শুরু হয়, আপনি নিজেই বোতামটি ব্যবহার করতে পারেন:
<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()
।
আরও এখানে দেখুন ।
ক্লিয়ারইন্টারওয়াল () পদ্ধতিটি টাইমারের সেটটি সেটআইন্টারভাল () পদ্ধতির সাহায্যে পরিষ্কার করতে ব্যবহার করা যেতে পারে।
সেটআইন্টারভাল সর্বদা একটি আইডি মান দেয়। এই মানটি টাইমার বন্ধ করার জন্য ক্লিয়ারইন্টারওয়াল () এ পাস করা যেতে পারে। এখানে টাইমার উদাহরণ 30 থেকে শুরু হয় এবং এটি 0 হয়ে গেলে থেমে যায়।
let time = 30;
const timeValue = setInterval((interval) => {
time = this.time - 1;
if (time <= 0) {
clearInterval(timeValue);
}
}, 1000);
@cnu,
আপনি বিরতি থামাতে পারবেন, যখন ইউআর কনসোল ব্রাউজার (এফ 12) দেখার আগে কোড চালানোর চেষ্টা করবেন ... মন্তব্যটি পরিষ্কার করার চেষ্টা করুন অন্তর্বর্তী (ট্রিগার) আবার কনসোল দেখায়, বিউটিফায়ার নয়? : P: P
একটি উত্স উদাহরণ দেখুন:
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;
});
এইচটিএমএল:
<button id="stop-interval">Stop Interval</button>
দ্রষ্টব্য: বিরতিটি এখনও কার্যকর করা হবে, যদিও কিছুই হবে না।
10 সেকেন্ড পরে টাইমার থামানোর জন্য আমি ক্লিয়ারইন্টারওয়াল () পদ্ধতিটি এভাবে ব্যবহার করেছি।
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>
কিছু সময়ের পরে অন্তর বন্ধ করতে সেটটাইমআউট ব্যবহার করুন।
var interVal = setInterval(function(){console.log("Running") }, 1000);
setTimeout(function (argument) {
clearInterval(interVal);
},10000);
আমি অনুমান করি যে নিম্নলিখিত কোডগুলি সাহায্য করবে:
var refreshIntervalId = setInterval(fname, 10000);
clearInterval(refreshIntervalId);
আপনি কোডটি 100% সঠিক করেছেন ... তাই ... সমস্যা কী? অথবা এটি একটি টিউটোরিয়াল ...
কেবল একটি ক্লাস যুক্ত করুন যা অন্তরকে কিছু না করতে বলে tells উদাহরণস্বরূপ: হোভারে।
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);
আপনার কোডের জন্য সমস্ত কিছু তদতিরিক্ত, চেকটি আপনি প্রথম কাজটি করেন, সুতরাং যখন এটি আড়াআড়ি করা হয় তখন খুব হালকা ওজনের হয়। এটি এটার জন্য যা: অস্থায়ীভাবে কোনও ক্রিয়াকলাপ বিরতি । আপনি যদি অনির্দিষ্টকালের জন্য এটি বন্ধ করতে চান: অবশ্যই আপনি অন্তর সরিয়ে ফেলুন।