ลูกศรสำหรับเปลี่ยนเดือนในปฏิทินด้วย JavaScript
ตอนนี้ขอให้เราสร้างลูกศรสำหรับเปลี่ยนเดือนใต้ปฏิทิน กัน เราจะปรับเปลี่ยนโค้ด HTML:
<div id="parent">
<div id="calendar">
<div class="info">ม.ค. 2020</div>
<table>
<thead>
<tr>
<th>จ.</th>
<th>อ.</th>
<th>พ.</th>
<th>พฤ.</th>
<th>ศ.</th>
<th>ส.</th>
<th>อา.</th>
</tr>
</thead>
<tbody class="body"></tbody>
</table>
<div class="nav">
<a href="#" class="prev">←</a>
<a href="#" class="next">→</a>
</div>
</div>
</div>
เราจะปรับเปลี่ยนโค้ด CSS:
#parent {
text-align: center;
}
#calendar {
display: inline-block;
}
#calendar td, #calendar th {
padding: 10px;
border: 1px solid black;
text-align: center;
}
#calendar .nav, #calendar .info {
text-align: center;
}
#calendar a {
color: blue;
font-size: 25px;
text-decoration: none;
}
#calendar a:hover {
color: red;
}
#calendar .active {
color: red;
}
ให้เราได้ลิงก์ของลูกศรมาเก็บในตัวแปร:
let prev = calendar.querySelector('.prev');
let next = calendar.querySelector('.next');
การอภิปราย
ตอนนี้ให้เราอภิปรายกันว่าจะแก้ไขปัญหานี้อย่างไร
ที่จริงแล้วโค้ดปฏิทินของเราเขียนมาด้วย
การขยายตัวที่ดี: เรามีฟังก์ชัน draw,
ซึ่งวาดปฏิทินสำหรับเดือนที่กำหนด
ดังนั้น เมื่อคลิกที่ลูกศร เราก็สามารถ
วาดปฏิทินใหม่ด้วยเดือนอื่นได้
(และอาจจะเป็นปีอื่นด้วย)
นี่คือตัวอย่างสิ่งที่เราสามารถทำได้เมื่อ คลิกที่ลูกศรเดือนถัดไป:
next.addEventListener('click', function() {
draw(body, getNextYear(year, month), getNextMonth(month));
});
อย่างที่คุณเห็น นี่ใช้ฟังก์ชัน
getNextYear และ getNextMonth
ให้เราอภิปรายกันว่ามันควรทำอะไร
ตามชื่อของมัน ฟังก์ชัน getNextYear
จะได้ปีถัดไป ที่นี่หมายถึง
ว่าถ้าตอนนี้เป็นเดือนธันวาคม เมื่อเปลี่ยน
ไปเดือนถัดไป ปีควรเพิ่มขึ้น
เป็น 1 แต่ถ้าตอนนี้ไม่ใช่เดือนธันวาคม
ฟังก์ชันก็ควรคืนค่าปีปัจจุบัน
ฟังก์ชัน getNextMonth ควรได้
เดือนถัดไป มันจะเพิ่มเลขเดือน
ด้วยหนึ่งสำหรับทุกเดือน ยกเว้น
เดือนธันวาคม ส่วนเดือนถัดไปของเดือนธันวาคม
ก็คือเดือนมกราคมที่มีเลข 0
การดำเนินการที่คล้ายกันควรทำเมื่อ คลิกที่ปุ่มเดือนก่อนหน้า:
prev.addEventListener('click', function() {
draw(body, getPrevYear(year, month), getPrevMonth(month));
});
โปรดทำให้ปุ่มเปลี่ยนเดือนทำงาน
ทำให้ข้อมูลเหนือปฏิทิน ตรงกับเดือนและปีที่แสดง