JavaScript 可以放置到網頁檔案的任何地方,不過,一般來說,通常是放在 <head> ... </head> 裡面,則要讓瀏覽器知道這一段資料是 javascript 的程式碼,就得要加上 <script> ... </script>才行!例如底下的範例:
<!doctype html> <html> <head> <title>....</title> .... <script> 程式碼在這裡 </script> </head> <body> .... </body> </html>
alert("Hello JavaScript");
承上,出現一個彈出式視窗,顯示剛剛你寫在 alert 裡面的文字,那就是成功的執行了 javascript 了! 一般來說,在 javascript 程式裡面,你需要注意的語法撰寫方式:
// 單行註解 /* 多行註解 還可以繼續寫 */
事實上,我們不是很建議使用 alert 來展示資料,因為你可以 google 翻譯一下, alert 代表警告的意思,所以, 這個彈出式視窗,代表警告!當然就不是很好。那怎辦?我們可以改用網頁改寫的 document.write 來處理。
你要知道,第一行展示的結果,其實是程式碼的輸出,不是純文字的展示喔!例如,我們使用底下的方式來撰寫一個計算的 BMI 的程式:
var myh = 1.77;
var myw = 70.;
document.write("你的 BMI: " + myw / myh / myh );
// var 為變數設定功能,關鍵字之一, myh 為自訂變數,這裡是指身高,單位為公尺
// 與上一行相同, myw 為自訂變數,這裡指的是體重,單位為公斤
在 document.write 裡面的資料,如果含有變數,則可以透故加號 (+) 來連結,如果連結的資料內有字串存在, 則後續的計算結果會被當成字串而顯示到網頁上。來處理一下底下這題:
很多時候,網頁可以透過滑鼠事件來處理的!其中一個很簡單的滑鼠事件,就是點下去 (onclick) 的用法! 許多時候,我們可以透過 button 來處理這樣的事件問題:
根據 DOM 的模型,我們可以透過 javascript 的幾個方式來取得網頁上面的元件!同時,根據取得的元素的方法不同,而有不一樣的資料類型喔! 舉例來說,使用 id (不是 class 喔!) 進行資料的取得將是『唯一』的,因此該資料的取得就會是單一的變數。而使用 name 或 標記 (tag) 來取得元素的話,因為網頁上很多元素會定義相同的名稱 (例如表單的單選資料) 或相同的標記 (例如清單的 li 或圖片的 img),因此,這些方式取得的變數,就會是『陣列』的形式喔!
至於 javascript 取得網頁上面的元件方式中,必須要從『整個網頁 (document)』的角度去思考,因此,取得元素的控制權, 就會有底下的幾種語法:
要注意喔,javascript 與 HTML 不一樣,javascript 的語法是有大小寫分別的,所以,上面的 3 個語法中,Element 與 By 與 Id, Name, TagName 的大小寫部份要注意~另外,除了第一個是單一變數,所以使用 Element 之外,底下兩個是陣列變數,所以是複數的 Elements 喔! 尾巴多了個 s 啦!
javascript 要處理取得的元素的控制權後,想要修改該元素的任何資料,都是使用小數點加上屬性的方式來處理的。 舉例來說,假設有個圖片的 HTML 碼寫這樣:
<img id="img1" src="dir1/img1.ipg" alt="check" />
那麼我們想要控制 img 的 src 時,基本上是這樣處理的:
document.getElementById("img1").src="newfilename.jpg";
看到了嘛?透過 getElementById 取得了 img1 的這個元素之後,將後續檔名的 src 修改掉了!就這麼簡單! 如果要更改 style 呢?那就變成這樣:
document.getElementById("img1").style.border="1px solid grey";
不過,從上面的作法來看,一切的設計都是在 onclick 裡面處理,那麼整個動作似乎有點麻煩。又例如 getElementsByName 的項目, 因為取得的資料是陣列,因此若有多個項目,就得要在 onclick 裡面增加好多條設計,這樣實在有點麻煩。 此時,透過 function 的方式,就可以將這個動作簡化了。
使用 function 的方式有點像底下這樣:
<button type="button" onclick="myfunction()"> Click me to display Date and Time. </button> <script> function myfunction() { document.getElementById('mycode').style.border = '1px solid gray'; .... } </script> <p id="demo"></p>
也就是說,你可以加入許多的程式碼在一個 function 裡面,然後透過 onclick 的功能去呼叫出來執行, 這樣當然直觀許多!而不是讓一堆程式碼亂亂的卡在 HTML 的標籤內。
透過取得網頁上面的元素,並且透過變數來讓取得的資料變成一個簡單的變數,方便進一步處理,這就可以對你的網頁進行大幅度的變更, 也讓你的使用者可以透過點擊或者其他相關的輸入,來跟你的網頁互動了。
其實 javascript 在網頁上可以做非常非常多的事情,除了取得網頁元件來進行修改其 CSS 屬性之外,也可以透過 .innerHTML 或 .outerHTML 來修改元件內部資料,或者是整個元件 (含 tag 本身) 的資料喔!這個 .innerHTML 或 .outerHTML 也是得要搭配 getElement(s)By{Id,Name,TagName} 的設計。
如上所示,透過 .innerHTML 就可以修改元件內的資料。不過,如果你還想要修改標記本身,那就得要透過 .outerHTML 的修訂了。