نحوه غیر فعال کردن دستور setInterval یا تایمر در جی کویری چجوری هست؟ با استفاده از دستور setInterval میتونم یک تایمر رو در جی کویری فعال کنم. توی گوگل سرچ کردن برای غیر فعال کردن تایمر در جی کویری باید از متد clearInterval استفاده کرد ولی از این دستور که استفاده می کنم تایمر همچنان کار میکنه.
کدهای من به صورت زیر هست و دستور setInterval رو در بدنه تابع به کار بردم
function startdeadlinefunc() {
myVar = setInterval(function () {
//statement
}
}, 1000);
}
سلام
چون از setIOnterval در یک فانکشن استفاده کردید (در واقع چون به صورت گلوبال تعریفش نکردید) برای غیر فعال کردنش باید به نحوی، فعال یا غیر فعال بودن تایمرتون رو مدیریت کنید، به عبارت دیگه باید کاری کنید که وقتی تایمر شروع به کار میکنه ازش یه مقدار بگیرید و بعدا از اون مقدار برای غیرفعال کردن تامیر استفاده کنید.
شما این مثالو ببینید :
<div id="d1" style="background-color: yellow; padding: 20px;" ></div><br>
<button onclick="timer()">Start</button><br>
<button onclick="stop()">Stop</button>
مثلا اگه بخوایم با این 3 تا المنت بالا یه تایمر بسازیم که بشه شروع یا متوقف کردنشو مدیریت کرد باید از قطعه کد زیر استفاده کنیم.
var time;
var x = true;
function timer() {
if ( x == true) {
time = setInterval(timer2 , 1000);
}
else if (x == false) {
clearInterval(time)
}
x = true;
}
function timer2() {
var date = new Date();
document.getElementById('d1').innerHTML = date.toLocaleTimeString();
}
function stop() {
x = false;
timer()
}
تو این کد برای مدیریت فعال یا غیرفعال بودن تایم از متغیر x استفاده کردم، حالا این x دقیقا چیکار میکنه؟
وقتی روی دکمه Start کلیک میشه فانکشن timer فراخوانی میشه. اینجا گفتیم اگر مقدار متغیر true بود تو بیا setInterval کن فانکشن timer2 رو. حالا قبل از اون چون مقدار متغیر x رو true داده بودیم این میاد و عملیات setInterval رو انجام میده. یعنی بعد از کلیک روی کلید Start، تایمر شروع به کار میکنه.
حالا وقتی روی دکمه Stop کلیک میشه فانکشن stop فراخوانی میشه. این فانکشن میگه که اولا بیا مقدار x رو false بده (که بعدا از طریقش بتونیم تایمر رو غیرفعال کنیم) و بعد هم بیا دوباره فانکشن timer رو فراخوانی کن. حالا فانکشن timer دوباره فراخوانی میشه اما اینبار چون مقدار متغیر ایکس false هست شرطی که توی if گفتیم ( x == true ) رو رد میکنه و میره سراغ else if. اینجا گفتیم اگر مقدار x مساوی false بود تو تایمر رو متوقف کن و چون مقدار x رو با فراخوانی فانکشن stop به false تغییر دادیم این میاد و ساعت رو متوقف میکنه. آخرش هم میایم مقدار x رو به همون مقدار اولیه یعنی true برمیگردونیم تا بعدا اگر دوباره روی کلید Start کلیک شد این بیاد timer رو فراخوانی کنی و بعد از اینکه ببینه مقدار ایکس true هست timer2 رو فراخوانی کنه و ساعت دوباره شروع به کار کنه و ادامه کار هم الی الابد به همین منوال.
متغیر x رو هم باید به صورت گلوبال تعریف کرد که بشه تو هر فانکشنی ازش استفاده کرد.
به زبون سادهی جاوااسکریپت گفتم که قشنگ جا بیوفته مطلب.
البته این کدها بهتره روی فقط یک button اعمال بشن نه دو تا، چون تو یه سری شرایط خاص ممکنه مشکل ساز بشه، منظور اینجور کدیه :
<div id="d1" style="background-color: yellow; padding: 20px;" ></div><br> <button onclick="timer(this)">Start</button><br>
var time; var x = true; function timer(btn) { if (x == true) { time = setInterval(timer2 , 1000) ; btn.innerHTML = "Stop"; x = false; } else { clearInterval(time); btn.innerHTML = "Start"; x = true; } } function timer2() { var date = new Date(); document.getElementById('d1').innerHTML = date.toLocaleTimeString(); }
برای استفاده از تابع clearInterval میتونید از روش زیر هم استفاده کنید. در این روش یک متغیر عمومی تعریف شده و مقدار تابع setInterval توش تعریف شده. بعد این متغیر رو به راحتی به clearInterval ارسال می کنیم
<script>
var myVar;
function startdeadlinefunc() {
myVar = setInterval(function () {
//statement
}
}, 1000);
}
$('#btnstop').on('click', function(){
clearInterval(myVar);
});
</script>
به این صورت میتونید به راحتی Timer رو متوقف کنید.
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
126
- پاسخ :
1
|
تاریخ :
1403/05/20
- ساعت :
09:18:00 PM
- بازدید :
393
- پاسخ :
0
|
تاریخ :
1402/01/26
- ساعت :
03:38:00 PM
- بازدید :
1211
- پاسخ :
1
|
تاریخ :
1402/11/13
- ساعت :
12:48:00 AM
- بازدید :
849
- پاسخ :
4
|
تاریخ :
1402/08/06
- ساعت :
01:20:00 PM
- بازدید :
700
- پاسخ :
1
|
تاریخ :
1398/08/21
- ساعت :
03:53:00 PM
- بازدید :
3045
- پاسخ :
1
|
تاریخ :
1398/08/18
- ساعت :
12:16:00 PM
- بازدید :
2769
- پاسخ :
2
|
تاریخ :
1399/10/20
- ساعت :
01:57:00 PM
- بازدید :
4920
- پاسخ :
1
|
تاریخ :
1399/07/25
- ساعت :
02:58:00 AM
- بازدید :
8482
- پاسخ :
1
|
تاریخ :
1402/02/07
- ساعت :
12:39:00 PM
- بازدید :
1024
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
370
- پاسخ :
1
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
909
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
891
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1281
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4746
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1113
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
565
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
126
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
72
- پاسخ :
0
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
300
- پاسخ :
1
|