WEB ◆ TS Library ◆ 熱衷分享 ◆ 享受教學相長 ◆ 無形的網絡擁有熱情溫度的傳遞
網頁設計基礎課程目錄

4-2. 認識 JavaScript 程式語言


什麼是JavaScript

JavaScript 是一種高階程式語言,通過編釋執行,是一門動態型別、物件導向的直譯語言。
最初是 Netscape 公司在 Netscape Navigator 2.0 產品上設計並實現,原名LiveScript。
1997年已經由 ECMA(歐洲電腦製造商協會)通過 ECMAScript 實現語言的標準化。
它被世界上的絕大多數網站所使用,也被世界主流瀏覽器(Chrome、IE、FireFox、Safari、Opera)支援。

JavaScript 程式由 ASCII 字元(純文字)構成,可利用記事本等文書或程式的編輯軟體來開發完成。
一般程式語言必須經過編譯的手續才能執行程式,但 JavaScript 並不需要經過編譯,
只要透過適當的直譯器(browser網頁瀏覽器)即可即時轉譯執行。

※JavaScript 並不是 Java! 也不是 JScript!

學習JS前加強:HTMLCSS

學習JS的參考網站:w3schoolsrunoob

留意 JS 版本:ECMAScript 定義標準化,2015「ES6」、2016「ES7」、2017「ES8」、2018「ES9」、2019「ES10」。

JS 程式寫在哪裡?

JavaScrip的程式碼必須被包在<script></script>標籤之間。

(一) 寫在 </head> 之前,
好處是可以保證在載入 <body> 內容之前已經載入 JavaScript 程式。
但如果不是為了確保載入內容之前得先載入JS執行,建議不放在這個位置。

(二) 寫在 </body> 之前 (也就是 body 區內的最後),
當你要用 JavaScript 控制網頁元素物件時,JavaScript 可以寫在物件的後方,確保物件已存在。
大多數的 JS 程式第一優先考量的撰寫位置,建議在這個位置。

(三) 將 JavaScript 獨立儲存成 xxxx.js 檔案
在 xxxx.html 檔案中,在 </head> 之前或是在 </body> 之前,撰寫以下載入 JS 檔案的語法,
<script src="路徑/xxxx.js"></script> ,如果還有其他的 JavaScript 程式,請留意前後執行的順序。

第一個 JS 練習

JS 程式語法的 3 + 3 + Fn

基礎程式語法的組成,不外乎 3 + 3 + function。

第 1 個「3」

  • 記憶能力
  • 判斷能力
  • 重複能力

第 2 個「3」

  • 控制物件執行【方法】
  • 控制物件的【屬性】
  • 控制物件註冊【事件】

「Fn」

自定函式 function

程式的記憶能力:記憶體基本變數的使用

參考介紹:w3schools(英文版)runoob(簡中版)

JavaScript 宣告變數的 4 種方式:

1、Automatically 不使用關鍵字宣告, 直接自動地使用變數(不嚴謹, 不建議)
2、使用 var 傳統方式, 較不嚴謹, 可重複定義, 後定義的覆蓋先定義的
3、使用 let 2015年ES6版本新增, 較嚴謹, 不能重複定義相同的變數名稱
4、使用 const 2015年ES6版本新增, 定義常數,常數是不能再被改變的值

重要運算符號的比較:

一個等號 為「指派 / 指定」
二個等號 不判斷型別只判斷內容值的「等於」
三個等號 必須同時判斷型別與內容值的「等於」

認識運算符號參考介紹: w3schools(英文版)runoob(簡中版)

範例練習:

進階的記憶能力:Array 陣列/數組 的使用

if 條件的判斷式基本語法

if 條件的判斷式延伸語法

switch 值的判斷式語法

程式的重複能力:迴圈的使用

重複能力的迴圈使用方式有多種,建議先參考以下連結介紹,後續實例再練習。

Class Title Link Description
Not Timing for 英文版簡中版 計數型迴圈
while
do...while
英文版簡中版 非計數型迴圈
Timing setTimeout 英文版簡中版 指定延遲時間後執行處理程序一次
setInterval 英文版簡中版 每隔指定的延遲時間後執行處理程序

範例小練習:for 迴圈

範例小練習:while 迴圈

範例小練習:do...while 迴圈

whiledo...while 的差別

while( 判斷條件 ){ 執行的工作; }
先判斷條件, 如果條件不成立, { } 內的工作可能一次也沒執行。

do { 執行的工作; } while( 判斷條件 );
會先執行一次, 再由while判斷條件, 條件成立再進行do。

程式的 method 方法

object.method(value); 物件.方法(值)

object 是指物件
可以是視窗(window)、文件(document)、變數(var)、日期/時間(date/time)、數學運算(math)、 字串(string)、圖片(picture)、影片(video)、聲音(sound)、表單(form)...等。

method 是指動作方法
可以是視窗的開啟(open)、視窗的關閉(close)、文件的撰寫(write)、日期時間的取得子元素(get...) ...等。

value 是指傳入動作方法的,例如:字串、數值、變數...等。

範例介紹:

DOM 網頁中元素物件的選取方法 Method

下載練習範例(請按右鍵再選【另存連結...】)

程式的 property 屬性

object.property = property value; 物件.屬性=屬性值

object 是指物件

property 是指屬性,例如:document.bgColor,bgColor是document的屬性

value 是指改變屬性的,例如:document.bgColor = "black",black就是改變文件背景顏色為黑色。

範例介紹:

下載練習範例(請按右鍵再選【另存連結...】)

程式的 event 事件

object.event = function(){ ... }; 物件.事件=當事件發生時執行的工作寫在function函式中

object 是指物件

event 是指事件,例如:onload, onclick, onmouseover, onchange。

function(){ ... },是指當事件發生時要執行的工作寫在自定函式 function函式的 { } 中。

事件簡介 全部事件   鼠標事件 鍵盤事件 表單相關 相關文檔/窗口
簡中runoob 簡中runoob   onclick onkeydown onsubmit onload
簡中w3school 簡中w3school   onmouseenter onkeyup onreset onunload
英文w3schools 英文w3schools   onmouseover onkeypress onchange onscroll
      onmousedown   onfocus onresize
      onmouseup   onblur  
      onmouseout   onselect ondrag
      onmouseleave     ondrop

範例介紹:

下載練習範例(請按右鍵再選【另存連結...】)

function 的使用

需要重複執行的工作

當工作需要重複執行時,將工作程序的撰寫包在 function 的 { } 內,接著再重複呼叫執行。
常搭配 setInterval() 或 setTimeout() 函式重複呼叫執行 function。

需要先準備好但不是馬上執行的程式

當工作預想會執行但不是馬上執行的程式,撰寫包在 function 的 { } 內,需要執行時再呼叫 function 執行。
例如事件的註冊,例如滑鼠的滑入工作、滑鼠的點選工作....,當滑鼠滑入或點選時再呼叫 function 執行。

下載練習範例(請按右鍵再選【另存連結...】)

查看練習範例的結果

範例介紹:

第 1 階段: 顯示JS預設時間格式

第 2 階段: 隨時顯示目前時間

第 3 階段: 只有個位數時, 加以調整前面補 0

第 4 階段: 加以調整星期的顯示

第 5 階段: 控制 停止時間 / 啟動時間

第 6 階段: 倒數計時