2/28/2555

การเขียนโปรแกรมนับถอยหลัง 10 วินาที ด้วย javascript

หากเราต้องการจำกัดเวลาการใช้งานของ user ในหน้าเว็บว่าต้องทำให้เสร็จภายในเวลาที่กำหนด ( เช่นระบบทำข้อสอบ online ) เราสามารถเขียนโปรแรมจับเวลานับถอยหลังโดยใช้ javascript ได้ดังนี้


<input type="text" size="8" id="counter" />  <!-- text box แสดงการนับถอยหลัง   -->

<script>

 var seconds=10;// กำหนดค่าเริ่มต้น 10 วินาที
 document.getElementById("counter").value='10';//แสดงค่าเริ่มต้นใน 10 วินาที ใน text box

function display(){ //function ใช้ในการ นับถอยหลัง

    seconds-=1;//ลบเวลาทีละหนึ่งวินาทีทุกครั้งที่ function ทำงาน

if(seconds==-1){return;} //เมื่อหมดเวลาแล้วจะหยุดการทำงานของ function display

    document.getElementById("counter").value=seconds; //แสดงเวลาที่เหลือ
    setTimeout("display()",1000);// สั่งให้ function display() ทำงาน หลังเวลาผ่านไป 1000 milliseconds ( 1000  milliseconds = 1 วินาที )
}
display(); //เปิดหน้าเว็บให้ทำงาน function  display()

</script>


หัวใจสำคัญของโปรแกรมนับเวลาถอยหลังนี้คือ การทำ recursive ใน function display() โดยจะสั่งให้ function display() ทำงานซ้ำ หลังเวลาผ่านไป 1 วินาที และลบค่า ตัวแปร seconds ทีละหนึ่ง คือเวลาที่เหลือ เมื่อเวลาที่เหลือ น้อยกว่า 0 แสดงว่าหมดเวลา เมื่อหมดเวลาแล้วจะหยุดการทำงานทันที