আমার দুটি ডেমো রয়েছে, একটি সঙ্গে jQuery
এবং একটি ছাড়া। উভয়ই তারিখ ফাংশন ব্যবহার করুন এবং এটি যতটা সহজ হয় তেমন সহজ।
ভ্যানিলা জাভাস্ক্রিপ্ট সহ ডেমো
function startTimer(duration, display) {
var timer = duration, minutes, seconds;
setInterval(function () {
minutes = parseInt(timer / 60, 10);
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.textContent = minutes + ":" + seconds;
if (--timer < 0) {
timer = duration;
}
}, 1000);
}
window.onload = function () {
var fiveMinutes = 60 * 5,
display = document.querySelector('#time');
startTimer(fiveMinutes, display);
};
<body>
<div>Registration closes in <span id="time">05:00</span> minutes!</div>
</body>
JQuery সহ ডেমো
function startTimer(duration, display) {
var timer = duration, minutes, seconds;
setInterval(function () {
minutes = parseInt(timer / 60, 10);
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.text(minutes + ":" + seconds);
if (--timer < 0) {
timer = duration;
}
}, 1000);
}
jQuery(function ($) {
var fiveMinutes = 60 * 5,
display = $('#time');
startTimer(fiveMinutes, display);
});
তবে আপনি যদি আরও সঠিক টাইমার চান যা কেবল কিছুটা জটিল:
function startTimer(duration, display) {
var start = Date.now(),
diff,
minutes,
seconds;
function timer() {
// get the number of seconds that have elapsed since
// startTimer() was called
diff = duration - (((Date.now() - start) / 1000) | 0);
// does the same job as parseInt truncates the float
minutes = (diff / 60) | 0;
seconds = (diff % 60) | 0;
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.textContent = minutes + ":" + seconds;
if (diff <= 0) {
// add one second so that the count down starts at the full duration
// example 05:00 not 04:59
start = Date.now() + 1000;
}
};
// we don't want to wait a full second before the timer starts
timer();
setInterval(timer, 1000);
}
window.onload = function () {
var fiveMinutes = 60 * 5,
display = document.querySelector('#time');
startTimer(fiveMinutes, display);
};
<body>
<div>Registration closes in <span id="time"></span> minutes!</div>
</body>
এখন আমরা কয়েকটি বেশ সহজ টাইমার তৈরি করেছি আমরা পুনরায় ব্যবহারযোগ্যতা এবং উদ্বেগ পৃথক করার বিষয়ে ভাবতে শুরু করতে পারি। "একটি গণনা টাইমারকে কি করা উচিত" জিজ্ঞাসা করে আমরা এটি করতে পারি?
- একটি কাউন্ট ডাউন টাইমার গণনা করা উচিত? হ্যাঁ
- একটি কাউন্ট ডাউন টাইমার কীভাবে নিজেকে ডিওএম এ প্রদর্শিত করতে হবে তা জানা উচিত? না
- একটি গণনা টাইমার 0 এ পৌঁছালে নিজেকে পুনরায় চালু করতে হবে? না
- একটি কাউন্ট ডাউন টাইমার কি ক্লায়েন্টের জন্য অ্যাক্সেসের জন্য একটি সময় দিতে পারে যে কত সময় বাকি? হ্যাঁ
সুতরাং এই বিষয়গুলি মাথায় রেখে আরও একটি ভাল লিখতে দেয় (তবে এখনও খুব সাধারণ) CountDownTimer
function CountDownTimer(duration, granularity) {
this.duration = duration;
this.granularity = granularity || 1000;
this.tickFtns = [];
this.running = false;
}
CountDownTimer.prototype.start = function() {
if (this.running) {
return;
}
this.running = true;
var start = Date.now(),
that = this,
diff, obj;
(function timer() {
diff = that.duration - (((Date.now() - start) / 1000) | 0);
if (diff > 0) {
setTimeout(timer, that.granularity);
} else {
diff = 0;
that.running = false;
}
obj = CountDownTimer.parse(diff);
that.tickFtns.forEach(function(ftn) {
ftn.call(this, obj.minutes, obj.seconds);
}, that);
}());
};
CountDownTimer.prototype.onTick = function(ftn) {
if (typeof ftn === 'function') {
this.tickFtns.push(ftn);
}
return this;
};
CountDownTimer.prototype.expired = function() {
return !this.running;
};
CountDownTimer.parse = function(seconds) {
return {
'minutes': (seconds / 60) | 0,
'seconds': (seconds % 60) | 0
};
};
তাহলে কেন এই বাস্তবায়ন অন্যের চেয়ে ভাল? আপনি এটি দিয়ে কী করতে পারেন তার কয়েকটি উদাহরণ এখানে। মনে রাখবেন যে প্রথম উদাহরণ ব্যতীত সমস্তগুলি দ্বারা অর্জন করা যায় নাstartTimer
ফাংশন ।
একটি উদাহরণ যা XX: XX বিন্যাসে সময় প্রদর্শন করে এবং 00:00 এ পৌঁছানোর পরে পুনরায় শুরু হয়
একটি উদাহরণ যা সময়কে দুটি ভিন্ন ফর্ম্যাটে প্রদর্শন করে
দুটি উদাহরণ রয়েছে যার দুটি পৃথক টাইমার রয়েছে এবং কেবলমাত্র একটি পুনরায় চালু হয়
একটি বোতাম টিপে গেলে গণনা ডাউন টাইমার শুরু করে এমন একটি উদাহরণ