Contoh Countdown Timer untuk Halaman Web dengan Javascript


Ketika membangun website konferensi, biasanya di halaman utama, diberikan countdown timer.

Dimana countdown timer ini berfungsi untuk memberikan informasi batas kepada calon peserta konferensi, yang berkeinginan untuk menjadi presenter, agar segera mengirimkan paper atau posternya sebelum tanggal yang ditentukan.

Salah satu contohnya, adalah website konferensi PIT-FMB 2022 seperti ditunjukkan pada gambar di atas.

Untuk keperluan tersebut, di bawah ini adalah kode javascript countdown timer, dengan tampilan yang membutuhkan dukungan styling CSS untuk membuat background yang transparan.

<html>
<head>
<title>The Example of Countdown Timer</title>
<style>
.countdownbox{
	font-family: "Roboto", Sans-serif;
	padding:10px;
	font-size:48px;
	background-color:#00000061;
	color:white;
	margin:5px 5px 0 5px;
	border-radius:5px;
}
</style>
<script>

</script>
</head>
<body>
<div id="countmainbox" style="display:flex;align-items:center;justify-content:center;">
<div style="text-align:center;"><div id="countday" class="countdownbox">00</div><br>Hari</div>
<div style="text-align:center;"><div id="counthour" class="countdownbox">00</div><br>Jam</div>
<div style="text-align:center;"><div id="countminute" class="countdownbox">00</div><br>Menit</div>
<div style="text-align:center;"><div id="countsecond" class="countdownbox">00</div><br>Detik</div>
</div>
<div style="margin-top: 20px;text-align: center;"><a href="https://edugameapp.com">Edugameapp.com</a></div>
<script>
function Julian()
{
	this.numday = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 
    this.nameday = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat","Sabtu","Minggu"]; 
    this.namemonth = ["Januari", "Februari", "Maret", "April", "Mei","Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"]; 
	
	this.AwalTahun = -4712;
	this.peryear = 0; 
    this.permonth = 0; 
    this.penambah = 10;
	
	this.init=function()
	{
		for (let i = 0; i < this.numday.length; i++) { 
            this.peryear += this.numday[i]; 
        } 
        this.permonth = this.peryear / this.numday.length; 
	}
	
	this.trace=function(day,month,year) 
    { 
        if (month < 1 || month > 12) { 
            if (month < 1) { 
                month = 1; 
            } 
            if (month > 12) { 
                month = 12; 
            } 
        } 
        if (day < 1) { 
            day = 1; 
        } 

        if(day>this.numday[month-1]){ 
            day=this.numday[month-1]; 
        } 

        if(this.basitoh(year) && month==2){ 
            day=this.numday[month-1]+1; 
        } 

        if (year == 1582 && month == 10) { 
            if (day >= 5 && day < 15) { 
                day = 15; 
            } 
        } 
 
        var hasil = 0; 
        for (let th = this.AwalTahun; th < year; th++) { 
            if (th % 4 == 0) { 
                if (!this.basitoh(th)) { 
                    hasil += 1; 
                } else { 
                    if (th < 1582) { 
                        hasil += 1; 
                    } 
                } 
            } 
            hasil += this.peryear; 
        } 
        var tam=0; 
        if (year % 4 == 0) { 
            if (!this.basitoh(year)) { 
                tam++; 
            } else { 
                if (year < 1582) { 
                    tam++; 
                } 
            } 
        } 
        for (let i = 0; i < (month - 1); i++) { 
            hasil += this.numday[i]; 
            if(i==1)hasil+=tam; 
        } 
        hasil += day; 
        if (year > 1582) { 
            hasil -= this.penambah; 
        } else if (year == 1582) { 
            if (month > 10) { 
                hasil -= this.penambah; 
            } else if (month == 10) { 
                if (day>=15) { 
                    hasil -= this.penambah; 
                } 
            } 
        } 
        jd = hasil-1; 
        return jd; 
    } 
	
	this.basitoh=function(th) 
    { 
        return ((th >= 1582) && (th % 100 == 0) && (th % 400) != 0); 
    } 
	
	this.getNameDayOfWeek=function(jd) 
    { 
        return this.nameday[(jd% 7)]; 
    } 
}

function hitungmundur()
{
	var jul=new Julian();
	jul.init();

	var today = new Date();
	var month=(today.getMonth()+1);
	var day=today.getDate();
	var year =today.getFullYear();
	var jam=today.getHours();
	var menit=today.getMinutes();
	var detik=today.getSeconds();
	var jdnow=jul.trace(day,month,year);

	var date = new Date("2090-08-24");//tanggal pelaksanaan
	day = date.getDate();
	month = date.getMonth() + 1;
	year = date.getFullYear();
	var jd=jul.trace(day,month,year);

	day=(jd-(jdnow+1));
	if(day>=0){
		var total=(23*60*60+59*60+60)-(jam*60*60+menit*60+detik);
		jam=Math.floor(total/(60*60));
		menit=Math.floor((total-jam*60*60)/60);
		detik=(total-jam*60*60-menit*60);
		document.getElementById("countday").innerHTML=(day<10)?"0"+day:day;
		document.getElementById("counthour").innerHTML=(jam<10)?"0"+jam:jam;
		document.getElementById("countminute").innerHTML=(menit<10)?"0"+menit:menit;
		document.getElementById("countsecond").innerHTML=(detik<10)?"0"+detik:detik;
		setTimeout(hitungmundur,1000);
	}else if(day<0 && day>=-3){
		document.getElementById("countmainbox").innerHTML="<h1>Today</h1>";
	}else{
		document.getElementById("countmainbox").innerHTML="<h2>Kegiatan telah dilaksanakan</h2>";
	}
}
hitungmundur();

</script>
</body>
</html>

Demo kode di atas dapat di lihat di:

https://edugameapp.com/CodeExample/CountdownCounter.html

Komentar



Postingan populer dari blog ini

Kumpulan Source Code Greenfoot

Algorithma Coretan Abstrak dengan HTML5 Canvas

Game TicTacToe dengan Greenfoot

Cara Membuat Halaman HTML Sederhana

Kode Greenfoot Game Snake Sederhana

Honeycomb Style Wallpaper dengan HTML5 Canvas

Ganti Kartu ATM BNI yang Rusak

Tips Agar Website Anda Segera di Terima oleh Google Adsense dan di-Monetize

Selamatan Latar Glundengan Bubuk Banyuwangi

Menggunakan JSON di Netbeans 8.2