ورود

View Full Version : سوال: کمک در ایجاد وقفه در تابع روز شمارم



crafcrab
دوشنبه 28 مرداد 1392, 02:15 صبح
سلام
من با javascirpt یه تابع درست کردم که روز - ساعت - دقیقه - ثانیه رو میگیره و شروع به شمارش معکوس میکنه تا 0 بشه

در یک کلام روز شمار معکوس

من وقتی که دارم از این اعداد مثلا ثانیه کم میکنم همون موقع نتیجه رو با دستور jquery زیر در صفحه html به کاربر نمایش میدم :

$("#m").html(m);
اما یک مشکل کوچیک دارم
من میخوام با وقفه 1 ثانیه ای عدد ها کم شه یه چیزی مثل تابع delay
اما هر کار کردم وقفه انجام نمیشه
هر دو کد زیر تست کردم:

$("#m").html(m).delay(800);
$("#m").delay(800).html(m);
بدون وقفه مثله فرفره از اعداد کم میشه
نکته : در کد بالا من عدد 800 گذاشتو واسه یک ثانیه وقفه باید چه عددی بزنم ؟

2undercover
دوشنبه 28 مرداد 1392, 09:08 صبح
متد delay برای وقفه انداختن برای انیمیشن هاست نه برای اینکاری که شما می خوای انجام بدی برای این کار شما باید از setInterval استفاده بکنی تا اون تابعی رو که زمان رو کم می کنه به طور متوالی هر یک ثانیه اجرا بکنه!

qartalonline
دوشنبه 28 مرداد 1392, 10:11 صبح
از تابع setInterval بصورت زیر استفاده کنید:

window.setInterval(time,1000);

var time = 100;
function time() {
alert(time--);
}

crafcrab
دوشنبه 28 مرداد 1392, 15:39 عصر
من فهمیدم باید از تابع setTimeout استفاده کنم
اما باز مشکل داره کد زیر رو ببینید
یک عدد به عنوان ثانیه میگیریم در متغیر s قرار دادیم و یکی یکی از اون عدد کم میکنه تا به 0 برسه
اما وقفه ایجاد نمیشه چرااااااااااااااااااااااا اا
این قدر سریع کم میکنه که ما میبینیم عدد 0 شده انگار اتفاقی نیافتاده



var s;
function f_second(){
s=15;
while(s>0){
var myS=setTimeout(s=gg(),1000);
}
}
function gg(){
s=s-1;
$("#s").html(s);
return s;
}

2undercover
دوشنبه 28 مرداد 1392, 15:44 عصر
خب این روش کاملا اشتباهی من و کاربر qartalonline گفتیم که باید از تابع setInterval استفاده بشه نه از setTimeout!