Part 5 JavaScript – 目前日期與月曆日期的更新
從現在開始,我們要開始導入JavaScript,JavaScript在整個網頁前端所負責的功能是用來對網頁的內容(HTML)與格式(CSS)進行動態的處理,是整個前端網頁程式設計的核心角色,務必要學好。
先備知識:
練習:把月曆App程式裏面的年月日找出來,用Date類別裏的方法換成實際的年月日資料。
0215 早上
- 控制敘述(if/if..else…, switch)
- document.getElementById()方法
- InnerHTML屬性
- 函式:function、function call、return
- 參考檔案:Programming in JavaScript
<script language="JavaScript">
document.getElementById("cur-date").innerHTML = new Date().getDate();
</script>
Date類別方法(這裏我們要用到的)
| getDate() | Returns the day of the month (from 1-31) |
| getDay() | Returns the day of the week (from 0-6) |
| getFullYear() | Returns the year |
| getMonth() | Returns the month (from 0-11) |
0215 早上
- review之前做過的練習
- JavaScript
- 寫在那裏?
- 輸出型態/何處
- 敘述、語法、關鍵字與註解
- 變數、資料型態、指定敘述、操作子、運算式等
- 數字與字串
- 陣列、陣列方法、陣列排序、元素走訪
- 程式流的控制、迴圈、switch、break/continue
- 函式
- 事件(events)、物件(objects)
- …
- 在 Chrome DevTools 中調試 JavaScript 入門 (除錯方法)
將月曆App導入動態程式設計
將月曆Web應用程式中的年/year、月/month、日/date、日週名/weekday,以Date類別提供的方法取得真實的實料,並將月、日、日週名轉換成適當的格式。
| 函式名稱 | 函式功能 |
| updateCurrentDates | 更新目前日期資料 |
| updateCalendarDates | 更新月曆中的日期資料 |
| addOrdinalIndicator | 將日期以序數方式呈現,即1st, 2nd, 3rd, 4th…. |
| translateToWeekdayName | 週日期表示方式 |
| translateToMonthName | 月名稱表示法方式 |
<script>
// 使用if來取得週天的名稱
// function getWeekdayName(weekday){
// var weekdayName;
// if (weekday === 0 ) weekdayName = "Sunday";
// if (weekday === 1 ) weekdayName = "Monday";
// if (weekday === 2 ) weekdayName = "Tuesday";
// if (weekday === 3 ) weekdayName = "Wednesay";
// if (weekday === 4 ) weekdayName = "Thursday";
// if (weekday === 5 ) weekdayName = "Friday";
// if (weekday === 6 ) weekdayName = "Saturay";
// return weekdayName;
// }
// 使用陣列來取得週天的名稱
function getWeekdayName(weekday){
var weekdayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
return weekdayNames[weekday];
}
function getMonthName(month){
switch (month) {
case 0: return "January";
case 1: return "February";
case 2: return "March";
case 3: return "April";
case 4: return "May";
case 5: return "June";
case 6: return "July";
case 7: return "August";
case 8: return "September";
case 9: return "October";
case 10: return "November";
case 11: return "December";
}
}
function addDateOrdinal(date) { //加上日期序數
switch (date) {
case 1:
case 21:
case 31: return date + "<sup>st</sup>";
case 2:
case 22: return date + "<sup>nd</sup>";
case 3:
case 23: return date + "<sup>rd</sup>";
default: return date + "<sup>th</sup>";
}
}
function updateDates(){
var today = new Date(); //新增一個Date物件,命名為today
document.getElementById("cur-year").innerHTML = today.getFullYear();
document.getElementById("back-year").innerHTML = today.getFullYear();
document.getElementById("cal-year").innerHTML = today.getFullYear();
document.getElementById("cur-month").innerHTML = getMonthName( today.getMonth() );
document.getElementById("cal-month").innerHTML = getMonthName( today.getMonth() );
document.getElementById("cur-date").innerHTML = addDateOrdinal( today.getDate() );
document.getElementById("cur-day").innerHTML = getWeekdayName(today.getDay());
}
updateDates();
</script>
目前階段的程式連結
練習1:以陣列方式重寫週日期與月名稱的轉換 (製作轉換表格)。
<script type="text/javascript">
function getWeekDayName(day){
var weekDayNames = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
return weekDayNames[day];
}
let today = new Date();
document.getElementById("cur-day").innerHTML = getWeekDayName( today.getDay() );
</script>
練習2:將上面的程式整理至js/updateDate.js,並製作使用連結。
<head> (略) <script type="text/javascript" src="js/updateDates.js"></script> </head>
