نقل قول:
نوشته شده توسط
yyuser
فقط میخوام بدونم این قسمت ها بر چه اساسی به دست میاد؟ یعنی یه چیز ثابتیه؟ چرا اینطوری محاسبه میشه؟
document.getElementById('days').innerText = Math.floor(distance / (day)),
document.getElementById('hours').innerText = Math.floor((distance % (day)) / (hour)),
document.getElementById('minutes').innerText = Math.floor((distance % (hour)) / (minute)),
document.getElementById('seconds').innerText = Math.floor((distance % (minute)) / second);
مقادیر countdown و nowdate هر دو اختلاف این زمانها رو با یک تاریخ مرجع و بر حسب میلی ثانیه میده.
این تاریخ مرجع در اینجا برای ما مهم نیست چون ما به اختلاف این دو کار داریم (همون distance) بنابراین خودکار حذف میشه.
چون distance بر حسب هزارم ثانیه هست، مقدار متغییر second رو 1000 گذاشته و به همین ترتیب از روی اون مقادیر هر دقیقه و ... محاسبه شده.
اول، بزرگترین بخش زمان که روز هست باید محاسبه بشه: Math.floor(distance / (day)
این تابع math.floor یکی از توابع ریاضی برای گرد کردن هست (بیشتر از یک تابع داریم) که بهتره مستنداتش رو بخونین:
https://www.w3schools.com/jsref/jsref_floor.asp
اپراتور % هم باقیمانده تقسیم صحیح رو برمیگردونه:
https://www.w3schools.com/jsref/tryi..._oper_modequal
بخشهای دیگه زمان هم بر همین مبنا یکی یکی از بزرگ به کوچک محاسبه شده.
کد زیر هم همون نتیجه رو میده ولی شاید ساده تر باشه روش کار:
DAYS = Math.floor(distance / day);
distance -= DAYS * day ;
HOURS = Math.floor(distance / hour);
distance -= HOURS * hour ;
MINUTES = Math.floor(distance / minute);
distance -= MINUTES * minute ;
SECONDS = Math.floor(distance / second);
document.getElementById('days').innerText = DAYS ;
document.getElementById('hours').innerText = HOURS ;
document.getElementById('minutes').innerText = MINUTES ;
document.getElementById('seconds').innerText = SECONDS ;