سلام
من با javascirpt یه تابع درست کردم که روز - ساعت - دقیقه - ثانیه رو میگیره و شروع به شمارش معکوس میکنه تا 0 بشه
در یک کلام روز شمار معکوس
من وقتی که دارم از این اعداد مثلا ثانیه کم میکنم همون موقع نتیجه رو با دستور jquery زیر در صفحه html به کاربر نمایش میدم :
اما یک مشکل کوچیک دارم
من میخوام با وقفه 1 ثانیه ای عدد ها کم شه یه چیزی مثل تابع delay
اما هر کار کردم وقفه انجام نمیشه
هر دو کد زیر تست کردم:
کد:
$("#m").html(m).delay(800);
$("#m").delay(800).html(m);
بدون وقفه مثله فرفره از اعداد کم میشه
نکته : در کد بالا من عدد 800 گذاشتو واسه یک ثانیه وقفه باید چه عددی بزنم ؟
سلام
در این لینک گفته شده که برای استفادهی 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;
}
آقا پوزش؛استفاده از setinterval گزینهی خیلی بهتری بود
البته با همون 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 بود
خواهش میکنیم
فکر نکنم مشکلتون فقط return بود! چون اگه اینطور بود فقط اون عدد باید تا -1 جلو میرفت و نه -2. . .
قطعا یکجای دیگه رو هم اشتباه کردید
فقط توی کد شما متوجه شدم یه خطا هست
اگه کد شما:
کد:
if (s==0){clearInterval(sit);return;}
به کد زیر تغییر دهیم :
کد:
if (s==0){
alert("z");
clearInterval(sit);return;
}
میبینید که بعد از 0 شدن باز هم تابع هر 1 ثانیه فراخوانی میشه و متوقف نمیشه
چی کار باید کرد !!!1
کد شما رو تست کردم کار میکنه
اما تو برنامه خودم هنوز این مشکل دارم
من کد خودم رو قرار میدم اینجا واقعا مخم پکید هنوز نتونستم بفهمم مشکلش چیه
کد : 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 میشه دستور :
باز تکرار میشه