ايران ويج

نسخه‌ی کامل: کمک در ایجاد وقفه در تابع روز شمارم
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
من با javascirpt یه تابع درست کردم که روز - ساعت - دقیقه - ثانیه رو میگیره و شروع به شمارش معکوس میکنه تا 0 بشه

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

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

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

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

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

نکته : در کد بالا من عدد 800 گذاشتو واسه یک ثانیه وقفه باید چه عددی بزنم ؟ Shy
سلام
در این لینک گفته شده که برای استفاده‌ی delay و تابع html باید از queue اساتفاده کنید

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


---------------
اما سوال اینجاست که چرا از این تابع؟!
کارتون رو با توابع settimeout خود جاوا اسکریپت انجام بدید دیگه!!
خلی هم رات و بی دردسر هستش؛ کافیه یه تابع بنویسید که زمانی که توی صفحه نشون داده شده رو بخونه و یک‌ثانیه ازش کم کنه (این قسمت رو که نوشتید)
با تابع settimeout هم هر ۱ ثانیه این تابع رو فراخوانی کنید!
من از تابع 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;
}
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
ممنون بابن کمک
الان فقط یک مشکل هست وقتی به 0 میرسه قطع نمیشه و -1 -2 و... میشه
من سعی کردم از دستور clearInterval استفاده کنم برای متوقف کردنش نشد میشه راهنمایی کنید
(۲۹-مرداد-۱۳۹۲, ۰۱:۵۲:۴۹)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
ممنون راستش کد شما با کدی که خودم زدم مقایسه کردم تنها اشتبام نداشتن return بود
بازم ممنون
شبیه کارم رو راه انداختی حسابی ذهنم در گیرش بود
باشه حتما بیشتر جاوا کار میکنم
(۲۹-مرداد-۱۳۹۲, ۰۲:۲۳:۲۸)crafcrab نوشته است: [ -> ]ممنون راستش کد شما با کدی که خودم زدم مقایسه کردم تنها اشتبام نداشتن return بود

خواهش میکنیم Biggrin
فکر نکنم مشکلتون فقط return بود! چون اگه اینطور بود فقط اون عدد باید تا -1 جلو میرفت و نه -2. . .
قطعا یکجای دیگه رو هم اشتباه کردید
فقط توی کد شما متوجه شدم یه خطا هست
اگه کد شما:

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

به کد زیر تغییر دهیم :
کد:
if (s==0){
            alert("z");
            clearInterval(sit);return;
        }
میبینید که بعد از 0 شدن باز هم تابع هر 1 ثانیه فراخوانی میشه و متوقف نمیشه
چی کار باید کرد !!!1
کد 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
کد شما رو تست کردم کار میکنه

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

کد : 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");
باز تکرار میشه
صفحه‌ها: 1 2