امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 2
  • 1
  • 2
  • 3
  • 4
  • 5
کمک در ایجاد وقفه در تابع روز شمارم
نویسنده پیام
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #1
Question  کمک در ایجاد وقفه در تابع روز شمارم
سلام
من با javascirpt یه تابع درست کردم که روز - ساعت - دقیقه - ثانیه رو میگیره و شروع به شمارش معکوس میکنه تا 0 بشه

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

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

کد:
$("#m").html(m);

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

بدون وقفه مثله فرفره از اعداد کم میشه Confused

نکته : در کد بالا من عدد 800 گذاشتو واسه یک ثانیه وقفه باید چه عددی بزنم ؟ Shy
۲۸-مرداد-۱۳۹۲, ۰۲:۴۷:۴۴
ارسال‌ها
پاسخ
تشکر شده توسط : orange signal
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #2
RE: کمک در ایجاد وقفه در تابع روز شمارم
سلام
در این لینک گفته شده که برای استفاده‌ی delay و تابع html باید از queue اساتفاده کنید

کد php:
http://stackoverflow.com/questions/2432749/jquery-delay-not-delaying 


---------------
اما سوال اینجاست که چرا از این تابع؟!
کارتون رو با توابع settimeout خود جاوا اسکریپت انجام بدید دیگه!!
خلی هم رات و بی دردسر هستش؛ کافیه یه تابع بنویسید که زمانی که توی صفحه نشون داده شده رو بخونه و یک‌ثانیه ازش کم کنه (این قسمت رو که نوشتید)
با تابع settimeout هم هر ۱ ثانیه این تابع رو فراخوانی کنید!
۲۸-مرداد-۱۳۹۲, ۱۳:۴۲:۳۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : orange signal
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #3
RE: کمک در ایجاد وقفه در تابع روز شمارم
من از تابع 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;
}
۲۸-مرداد-۱۳۹۲, ۱۶:۲۱:۱۹
ارسال‌ها
پاسخ
تشکر شده توسط : orange signal
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #4
RE: کمک در ایجاد وقفه در تابع روز شمارم
Biggrin آقا پوزش؛استفاده از setinterval گزینه‌ی خیلی بهتری بود Biggrin البته با همون timeout هم میشد ولی این بهتره

کد php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<
head>
    <
title>untitled</title>
    <
meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <
meta name="generator" content="Geany 0.18" />
    <
script src="jquery-1.9.1.min.js"></script>
    <
script>
    var 
s=100;
    $(
document).ready(function(){
        
setInterval(starts,1000);
    }); 
    function 
starts(){
        
s=s-1;
        $(
"#s").html(s);
    }
    </
script>
</
head>

<
body>
    <
div id="s"></div>
</
body>
</
html
۲۸-مرداد-۱۳۹۲, ۱۹:۵۵:۲۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Ghoghnus, orange signal, behzady
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #5
RE: کمک در ایجاد وقفه در تابع روز شمارم
ممنون بابن کمک
الان فقط یک مشکل هست وقتی به 0 میرسه قطع نمیشه و -1 -2 و... میشه
من سعی کردم از دستور clearInterval استفاده کنم برای متوقف کردنش نشد میشه راهنمایی کنید
۲۹-مرداد-۱۳۹۲, ۰۱:۵۲:۴۹
ارسال‌ها
پاسخ
تشکر شده توسط : orange signal
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #6
RE: کمک در ایجاد وقفه در تابع روز شمارم
(۲۹-مرداد-۱۳۹۲, ۰۱:۵۲:۴۹)crafcrab نوشته است: من سعی کردم از دستور clearInterval استفاده کنم برای متوقف کردنش نشد میشه راهنمایی کنید

خدمت شما؛ ولی برای اینکه خدتون هم اذیت نشید توضیه میکنم یکم بیشتر روی جاوا اسکریپت کار کنید تا مسلط‌تر بشید روش

کد php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<
head>
    <
title>untitled</title>
    <
meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <
meta name="generator" content="Geany 0.18" />
    <
script src="jquery-1.9.1.min.js"></script>
    <
script>
    var 
s=7;
    $(
document).ready(function(){
        var 
sit setInterval(starts,1000);
    }); 
    function 
starts(){
        if (
s==0){clearInterval(sit);return;}
        
s=s-1;
        $(
"#s").html(s);
    }
    </
script>
</
head>

<
body>
    <
div id="s"></div>
</
body>
</
html
۲۹-مرداد-۱۳۹۲, ۰۲:۱۳:۲۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : crafcrab, orange signal, behzady
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #7
RE: کمک در ایجاد وقفه در تابع روز شمارم
ممنون راستش کد شما با کدی که خودم زدم مقایسه کردم تنها اشتبام نداشتن return بود
بازم ممنون
شبیه کارم رو راه انداختی حسابی ذهنم در گیرش بود
باشه حتما بیشتر جاوا کار میکنم
۲۹-مرداد-۱۳۹۲, ۰۲:۲۳:۲۸
ارسال‌ها
پاسخ
تشکر شده توسط : babyy, orange signal
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #8
RE: کمک در ایجاد وقفه در تابع روز شمارم
(۲۹-مرداد-۱۳۹۲, ۰۲:۲۳:۲۸)crafcrab نوشته است: ممنون راستش کد شما با کدی که خودم زدم مقایسه کردم تنها اشتبام نداشتن return بود

خواهش میکنیم Biggrin
فکر نکنم مشکلتون فقط return بود! چون اگه اینطور بود فقط اون عدد باید تا -1 جلو میرفت و نه -2. . .
قطعا یکجای دیگه رو هم اشتباه کردید
(آخرین ویرایش در این ارسال: ۲۹-مرداد-۱۳۹۲, ۰۲:۲۶:۰۹، توسط babyy.)
۲۹-مرداد-۱۳۹۲, ۰۲:۲۵:۳۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Ghoghnus, Ambassador, orange signal
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #9
RE: کمک در ایجاد وقفه در تابع روز شمارم
فقط توی کد شما متوجه شدم یه خطا هست
اگه کد شما:

کد:
if (s==0){clearInterval(sit);return;}

به کد زیر تغییر دهیم :
کد:
if (s==0){
            alert("z");
            clearInterval(sit);return;
        }
میبینید که بعد از 0 شدن باز هم تابع هر 1 ثانیه فراخوانی میشه و متوقف نمیشه
چی کار باید کرد !!!1
۲۹-مرداد-۱۳۹۲, ۲۰:۴۴:۱۰
ارسال‌ها
پاسخ
تشکر شده توسط : orange signal
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #10
RE: کمک در ایجاد وقفه در تابع روز شمارم
کد php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<
head>
    <
title>untitled</title>
    <
meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <
meta name="generator" content="Geany 0.18" />
    <
script src="jquery-1.9.1.min.js"></script>
    <
script>
    var 
s=8;
    $(
document).ready(function(){
        
sit setInterval(starts,1000);
    }); 
    function 
starts(){
        if (
s<=0){
            
alert("z");
            
clearInterval(sit);
            return;
        }
        
s=s-1;
        $(
"#s").html(s);
    }
    </
script>
</
head>

<
body>
    <
div id="s"></div>
</
body>
</
html
۲۹-مرداد-۱۳۹۲, ۲۱:۰۰:۵۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : crafcrab, orange signal, Ambassador, behzady
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #11
RE: کمک در ایجاد وقفه در تابع روز شمارم
کد شما رو تست کردم کار میکنه

اما تو برنامه خودم هنوز این مشکل دارم
من کد خودم رو قرار میدم اینجا واقعا مخم پکید هنوز نتونستم بفهمم مشکلش چیه

کد : function.js
کد:
var d;
var h;
var m;
var s;

function start(){
    count_down(3,2,7,5);
}

function count_down(d1,h1,m1,s1){
    d=d1;
    h=h1;
    m=m1;
    s=s1;
    f_second(s);
}

function f_second(s){
    sit = setInterval(Subtraction,1);
}

function Subtraction(){
    if(d<=0 && h<=0 && m<=0 && s<=0){
        alert("k");
        clearInterval(sit);
        return;
    }
    else{
        if (s==0){
            if(m-1>=0){
                m=m-1;
                s=60;
                $("#m").html(m);
            }
            else{
                f_hours();
            }
        }
        else{
            s=s-1;
            $("#s").html(s);
        }
    }
}

function f_min(m){
    $("#h").html(h);
    $("#m").html(m);
    s=60;
    f_second(s);
}

function f_hours(){
    if(h>0){
        h=h-1;
        m=59;
        f_min(m);
    }
    else{
        if(d>0){
            d=d-1;
            $("#d").html(d);
            h=23;
            m=59;
            f_min(m);
        }
        else{
            $("#e").html("end");
        }
    }
}

کد index.html :
کد:
<html xmlns="http://www.w3.org/1999/xhtml" lang="fa" xml:lang="fa">
<head>
    <script type="text/javascirpt" src="function.js"></script>
    <script language="javascirpt" type="text/javascirpt" src="jquery.min.js"></script>
</head>
<body>
    <script type="text/javascirpt">
        $(document).ready(function(){
            $("body").ready(function(){
                start();
            });
        });
    </script>
    
    
    
    <span id="d">3</span><span>-</span>
    <span id="h">2</span><span>:</span>
    <span id="m">7</span><span>:</span>
    <span id="s">5</span>
    <p id="e">State</p?
</body>
</html>

فقط سرعتش تند کردم که جواب سریع تر جواب دیده بشه
وقتی همه اعداد 0 میشه دستور :
کد:
alert("k");
باز تکرار میشه
(آخرین ویرایش در این ارسال: ۳۰-مرداد-۱۳۹۲, ۰۲:۱۶:۵۱، توسط crafcrab.)
۳۰-مرداد-۱۳۹۲, ۰۲:۱۴:۲۱
ارسال‌ها
پاسخ
تشکر شده توسط : orange signal


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  آموزش ایجاد تبلیغات در گوشه سایت با CSS و jQuery Ghoghnus 0 1,703 ۲۷-آذر-۱۳۹۲, ۱۸:۳۶:۱۳
آخرین ارسال: Ghoghnus
  jquery - کمک - تابع crafcrab 5 4,596 ۱۷-تير-۱۳۹۲, ۲۰:۰۰:۱۹
آخرین ارسال: babyy

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS