Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

JavaScript Countdown Timer: บทช่วยสอนสร้างนับถอยหลัง

Countdown timers ใช้ทั่วไปบนอินเทอร์เน็ตโดยคนที่อยากนับถอยหลังสู่ major event

คุณอาจใช้ countdown timer นับถอยหลังสู่การ launch เว็บไซต์ใหม่ หรือ marking การประกาศผลิตภัณฑ์ มีความเป็นไปได้มากมาย

ในคู่มือนี้ เราจะแสดงวิธีสร้าง countdown timer ใน JavaScript ด้วยสามเทคโนโลยี: HTML, CSS และ JavaScript มาเริ่มกัน!

ตั้งค่า Webpage ของเรา

ขั้นแรก ตั้งค่า basic web page ในคู่มือนี้ ไม่ใช้ external libraries จะทำ simple ด้วย plain HTML, CSS, JavaScript

เริ่มสร้าง HTML file:

<!DOCTYPE html> <html> <script> // We'll store our JavaScript code here </script> <style> // We'll write our CSS styles here </style> <body> <h1>It's almost time…</h1> <div id="timer"></div> </body> </html>

โค้ดไม่คืนค่าอะไรพิเศษตอนนี้ ดูด้านล่าง:

JavaScript Countdown Timer: บทช่วยสอนสร้างนับถอยหลัง

เพราะยังไม่เพิ่ม styles หรือสร้าง JavaScript timer มาสร้าง JavaScript ที่ขับเคลื่อน timer กัน

สร้าง Timer ของเรา

JavaScript มี object เรียกว่า Date ใช้ทำงานกับ dates และ times เราจะใช้ object นี้สองจุดประสงค์: ได้ timestamp ของเวลาที่อยากนับถอยหลัง และได้ current date

ในบทช่วยสอนนี้ เราจะเขียน scripts ทั้งหมดใน <script></script> tag ไม่ใช้ external scripts

ลบวันที่นับถอยหลังออกจาก current date จะได้ difference ระหว่างสองวันที่:

var timeLeft = +new Date("2021-05-04") - +new Date();

โค้ดคำนวณเหลือกี่วันจนถึง Star Wars Day ถัดไป คือ 4 พฤษภาคม 2021

ตอนเรารู้ difference ระหว่างสองวันแล้ว แต่มีปัญหา สองอย่าง: ไม่มี timer นับถอยหลัง และ date ไม่อยู่ใน format ที่มนุษย์อ่านง่าย เก็บเป็น milliseconds ไม่สะดวก ต้องแปลงเป็นวัน ชั่วโมง นาที

เพื่อคำนวณเวลาที่เหลือใน format อ่านง่าย ใช้โค้ดนี้:

var daysLeft = Math.floor(timeLeft / (1000 * 60 * 60 * 24)); var hoursLeft = Math.floor((timeLeft / (1000 * 60 * 60)) % 24); var minutesLeft = Math.floor((timeLeft / 1000) / 60 % 60);

จัด format ค่าเป็น string ด้วยโค้ดนี้:

const timeLeftText = `${daysLeft} days ${hoursLeft} hours ${minutesLeft} minutes.`;

ในโค้ดนี้ ใช้ string interpolation แทนค่าที่คำนวณได้ จะได้ timestamp แบบ: 314 days 13 hours 52 minutes

ตอนได้ timestamp แล้ว วางบน webpage:

document.getElementById("timer").innerHTML = timeLeftText;

ย้ายโค้ดทั้งหมดเข้า function:

function countdown() { var daysLeft = Math.floor(timeLeft / (1000 * 60 * 60 * 24)); var hoursLeft = Math.floor((timeLeft / (1000 * 60 * 60)) % 24); var minutesLeft = Math.floor((timeLeft / 1000) / 60 % 60); const timeLeftText = `${daysLeft} days ${hoursLeft} hours ${minutesLeft} minutes.`; document.getElementById("timer").innerHTML = timeLeftText; } countdown();

โหลดหน้า จะได้:

JavaScript Countdown Timer: บทช่วยสอนสร้างนับถอยหลัง

ตอนนี้มี timer แล้ว เสร็จแล้วหรือ? ไม่เร็วเกินไป ถ้ารอหนึ่งนาที จะเห็น timer ไม่นับถอยหลังจริง เพราะต้องบอก browser update ทุกนาที ทำได้ด้วยโค้ดนี้:

setInterval(countdown, 60000);

โค้ดนี้เพิ่มหลัง countdown() function declared จะ refresh หน้าทุก 60,000 milliseconds เท่ากับทุก 60 วินาที

ตอนนี้อัปเดตโค้ด จะเห็นมันเปลี่ยนทุกนาที!

เพิ่ม Styles ให้สวย

Countdown timer ทำงานได้ แต่ไม่สวย במיוחד มาสร้าง styles ให้ดูดูดใจ:

<style> body { padding-top: 20%; height: 100vh; background: linear-gradient(to bottom right, #CAA89C, #434EFC); } h1, p { text-align: center; color: white; } </style>

เว็บเพจตอนนี้:

JavaScript Countdown Timer: บทช่วยสอนสร้างนับถอยหลัง

หน้ามี gradient background text อยู่กลาง สีขาว ดูดีมาก!

สรุป

Countdown timers เป็นฟีเจอร์สำคัญของหลายไซต์ คุณจะเห็น countdowns บน personal และ professional web pages บล็อกส่วนตัวอาจมี countdown สู่งานแต่ง บริษัทอาจมี countdown สู่ product launch

ตอนนี้คุณพร้อมสร้าง JavaScript countdown timer ของตัวเองแบบมืออาชีพแล้ว!