Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JavaScript Basic
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ryan Chung
April 11, 2014
Technology
2.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JavaScript Basic
http://MobileDev.TW
Ryan Chung
April 11, 2014
More Decks by Ryan Chung
See All by Ryan Chung
MovieBot Development
ryan403
0
340
Design Voice-First Games for Alexa
ryan403
0
94
AI Teaching Talk
ryan403
0
160
Cognitive Service
ryan403
0
130
jQuery & API Practices
ryan403
0
170
CSS Practices
ryan403
1
190
JavaScript Practices
ryan403
0
120
Web Programming - Lesson 6
ryan403
1
680
Web Programming - Lesson 7
ryan403
1
670
Other Decks in Technology
See All in Technology
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
120
omasushiというライブラリを作った
polidog
PRO
0
190
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
650
AIで実装は速くなった。なのにプロダクトは速くならない。職能の壁を越えて価値のフローを設計する
nwiizo
8
7.8k
Omarchy Quattro の日本語設定周り
simosako
2
140
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
180
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
2.6k
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
450
Webとヘルスデータ
yukukotani
1
370
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
500
AI時代に顧客へ最速で価値を 届けるための試行錯誤 〜「AI × マネジメント」領域におけるmentoのケース〜
posterkeisuke
0
110
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
130
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
300
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
320
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
820
How to Think Like a Performance Engineer
csswizardry
28
2.8k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
270
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Chasing Engaging Ingredients in Design
codingconduct
0
300
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Transcript
JavaScript Basic Ryan Chung
[email protected]
1
Course Scope 2
PART I. JAVASCRIPT 基礎語法 3
1.什麼是JavaScript • 增加HTML頁面上的互動性 • 是一種scripting language • 功用 • 增加網頁上的動態效果
• 可以根據特定事件對應執行動作 • 可以讀取與改寫HTML元件 • 可以拿來進行表單驗證 • 偵測使用者的瀏覽器 • 建立與存取cookie 4
2.怎麼寫 <script type="text/javascript"> //就寫在這裡面 document.write("<p>" + Date() + "</p>"); </script>
5
3.放在哪 1. 放在<body>..</body> • 一般要直接執行的JavaScript會放在</body>前面 • 先讓整個頁面的HTML元件載入 2. <head>…</head> •
特定事件觸發才做的函數內容會放在 <head>section 3. 獨立成一個檔案 • <head><script src="xxx.js"></script></head> 6
4.Statement • 循序執行 • 大小寫有區分 • 通常以分號結尾 7
5.註解 • 單行 // • 多行 /* Comments more than
one line */ 8
6.變數 • 變數名稱 • 大小寫有區分 • 第一個字必須是英文字母或底線 • 變數宣告 •
關鍵字 var var x; var name="Ryan"; 9
變數範圍 • 區域變數 • 在函數內宣告的即為區域變數,只能在該函數內使用 • 全域變數 • 在函數外宣告的即為全域變數,整個頁面的Script都可 用
• 直接給值或宣告時前面沒加var的變數,即為全域變數 (前提是此變數尚未存在) var x=5; x=4; x; 10
7.運算 11
7.運算 12
字串相"+" txt1="What a very"; txt2="nice day"; txt3=txt1+txt2; What a verynice
day txt3 txt1="What a very "; txt2="nice day"; txt3=txt1+txt2; What a very nice day txt3 txt1="What a very"; txt2="nice day"; txt3=txt1+" "+txt2; What a very nice day txt3 13
8.跳出視窗 • Alert box • alert("sometext"); • Confirm box •
confirm("sometext"); • OK:true or Cancel:false • Prompt box • prompt("sometext","defaultvalue"); • 取得使用者輸入的值進行動作 14
8-1.Lab Alert 15
8-2.Lab Confirm 16
8-2.Lab Prompt 17
9.函數 • 執行時機 • 直接被呼叫 • 事件發生時觸發 • CallBack •
語法 function functionname(var1,var2,...,varX) { some code } 18
10.Break and Continue in For loop • break:離開迴圈 • continue:跳過這一圈
19
11.For…in • 巡訪物件中的每一個屬性與方法 20
11.For…in Lab • 巡訪window物件 21
12.事件觸發方法與常見事件 • 事件是JavaScript可以偵測得到的一種動作 • HTML元件上的動作會觸發JavaScript的事件 • 按下按鈕元件 --> onClick事件 •
網頁頁面載入 --> onLoad事件 • 滑鼠游標在某個元件上 --> onMouseOver事件 發生什麼事?要做什麼因應措施? 22
事件觸發處理方法1.HTML Attribute • 直接加入在HTML的屬性中 23
事件觸發處理方法2.Event Function • 使用JavaScript語法,定義onclick要執行的動作 24
事件觸發處理方法3.Event Listener • 監聽該元件,是否有XX事件發生 25
常見滑鼠事件 26
常見鍵盤事件 27
框架/物件事件 28
表單事件 29
13. Try...Catch • 檢測區段中的程式碼是否有誤 try { //Run some code here
} catch(err) { //Handle errors here } 30
14.Throw • 自訂錯誤狀態 • 依據不同錯誤狀態,對應顯示不同訊息 31
PARTII. JAVASCRIPT 物件導向程式設計 32
OOP • 物件、屬性與方法 • 物件 • 自訂物件 • 內建物件 •
屬性 • 物件的某項特質 • 方法 • 物件可以進行的一種行為 33
PartII-A. BUILT-IN OBJECTS 34
15.String 字串物件 • 屬性 • text.length:取得字串長度 • 方法 • text.big():將字串字體放大
• text.charAt(x):回傳x位置的字元 • text.concat(string2,string3,…):串接字串 • text.indexOf(string):回傳第一個出現該字串的位置 • text.lastIndexOf(string):回傳最後一個出現該字串的位置 • text.replace("subString","newString"):字串替換 • text.slice(begin, end):取出部份字串 (可輸入一個負值從後面取x字元) • text.split(separator):依特定符號進行切割,並放入陣列 • text.substr(begin,length):取出部份字串 • text.substring(from,to):取出部份字串 • text.toLowerCase():全部轉小寫 35
15.String Lab • 字串 Hello World! • 秀出字串長度 • 找到World的位置
• 依空格切割,秀出Hello與World! 36
16.Date 日期時間物件 • 取得目前時間 • var d=new Date(); • d.getFullYear()
目前年 • d.getMonth() 目前月(0~11) • d.getDate() 目前日(1~31) • d.getDay() 目前週(0~6) • d.getHours() 目前時(0~23) • d.getMinutes() 目前分(0~59) • d.getSeconds() 目前秒(0~59) 取得目前日期 d.toLocaleDateString() 取得目前時間 d.toLocaleTimeString() 取得目前日期加時間 d.toLocaleString() 37
16.Lab • 運用JavaScript顯示目前時間 38
17.Array 陣列物件 • 建立陣列 • 存取陣列 39
17.Array 陣列物件 • 將陣列的各元素以特定的連結符號組合成字串 • arrayName.join(separator) 40
18.Math 數學物件 • Math.PI:PI值 • Math.abs(number):取絕對值 • Math.floor(number):向下整數 • Math.ceil(number):向上整數
• Math.round(number):取整數(四捨五入) • Math.max(number,number,number,…):最大值 • Math.random():產生亂數 (介於0 ~ 1之間) 0 1 -1 41
18.Lab • 產生介於1 ~ 10的亂數 42
18.Lab2 • 亂數出現不同的背景圖片 43
19.RegExp物件 • 正規表達式 (Regular Expression) • 用以描述欲搜尋的字串條件 • var patt=/pattern/modifiers;
• Modifier • i:不管大小寫(case-insensitive) • g:全域搜尋(找到全部符合條件的字串) • 正規表達式與字串替代 • string.replace(/pattern/modifiers, "new string"); 44
PartII-B. WINDOW OBJECT 45
20.Window Object • 在瀏覽器中開啓一個視窗即建立一個視窗物件 • 屬性 • window.closed:該視窗關閉即為true • window.name:該視窗名稱
• history (物件):記錄下使用者在該視窗所去過的網址 • navigator (物件):瀏覽器相關資訊 • document (物件):當該視窗載入一份HTML文件時即產生 46
20.Window Object • 方法 • 跳出視窗 • alert( ) •
confirm( ) • prompt( ) • 定時器 • setInterval( ) • setTimeout( ) • clearInterval( ) • clearTimeout( ) •開新視窗 • window.open(URL, name, specs) • URL:顯示網頁 • name:視窗名稱 • specs:規格 •height •width •left •top 47
21.History物件 • 屬於window物件,提供使用者瀏覽歷史記錄 • 屬性 • length 歷史清單長度 • 方法
• back( ) 載入清單中上一個網址 • forward( )載入清單中下一個網址 • go( ) 去清單中特定的一個網址(用數字) 3 Back Back Forward go 48
22.Navigator物件 • 屬於Window物件,提供該視窗的瀏覽器資訊 • 屬性 • appName 瀏覽器名稱 • appVersion
瀏覽器版本資訊 • userAgent (較完整,最常被採用) • 方法 • javaEnabled( ) 回傳該瀏覽器是否有啓動Java 49
22.Lab • 判斷目前瀏覽器是不是Chrome 50
23.Document Object • 屬性 • domain:傳回目前文件所在的域名 • title:傳回目前文件定義的title • URL:傳回目前文件的完整網址路徑
• cookie:傳回目前文件的cookie資訊 51
23.Document Object • 方法 • getElementById( ):存取第一個id名稱相符的元件 • getElementsByName( ):存取所有name相符的元件
• getElementsByTagName( ):存取所有該標籤名稱的元件 • write( ):寫入文件 • writeln( ):寫入文件並帶上換行符號 52
23.Document Object • Collections 篩選 • anchors[ ] 找到所有頁面上的anchor •
forms[ ] 找到所有頁面上的form • images[ ] 找到所有頁面上的image • links[ ] 找到所有頁面上的link 53
23.Lab 圖片切換 54
23.Lab 圖片切換 55
23.Lab2a 圖片摘要 56
23.Lab2b 用JS換圖片 57
24.Document Object Model • W3C標準 • 用來存取HTML或XML文件 • Core DOM
• 任何結構化文件的標準模型 • XML DOM • XML文件的標準模型 • HTML DOM • HTML文件的標準模型 58
HTML DOM • HTML的標準物件模型 • HTML的標準程式界面 • 可於各種平台、語言使用 • W3C制定的標準
• HTML DOM是一種標準,用來取得、改變、 新增或刪除HTML元件 59
Node 節點 • HTML文件中,所有的事物都是一個節點 • 整個文件:文件節點 • HTML元件:元件節點 • HTML元件中的文字:文字節點
• HTML中的屬性:屬性節點 • HTML中的註解:註解節點 60
節點分析 • 根節點:<html> • <html>節點有兩個子節點:<head>與<body> • <title>節點有一個text子節點:DOM Tutorial <html> <head>
<title>DOM Tutorial</title> </head> <body> <h1>DOM Lesson one</h1> <p>Hello world!</p> </body> </html> 61
樹狀結構 • HTML DOM把HTML文件當成一顆節點樹 62
父母、小孩與兄弟姊妹 • 最上層的節點稱之為根 (root) • 除了根節點外,每一個節點都有一個父節點 • 一個節點可以有任意數量的子節點 • 沒有子節點的節點稱之為葉
(leaf) • 有相同父節點的節點稱之為兄弟(sibling) 63
HTML DOM屬性 • innerHTML:文字值 • nodeName:名稱 • nodeValue:值 • parentNode:父節點
• firstChild:第一個子節點 • lastChild:最後一個子節點 • nextSibling:緊鄰的兄弟節點 • nodeType:元件型態 64
HTML DOM屬性 • nodeName • 元件節點的節點名稱即為標籤名稱(會變成大寫) • 屬性節點的節點名稱即為屬性名稱 • 文字節點的節點名稱為#text
• 文件節點的節點名稱為#document • nodeValue • 元件節點的節點值為null • 文字節點的節點值即為文字本身 • 屬性節點的節點值即為屬性值 65
HTML DOM屬性 • nodeType • 1:Element • 2:Attribute • 3:Text
• 8:Comment • 9:Document 66
HTML DOM 方法 • getElementById(id) • getElementsByTagName(name) • appendChild(node) •
removeChild(node) • getAttribute(attributeName) 67
HTML DOM Collections • attributes[ ] • 回傳該元件的所有屬性組成一個陣列 • childNodes[
] • 回傳該元件的所有子節點組成一個陣列 68
改變元件 • 改變元件的屬性值 • document.body.bgColor="yellow"; • 改變元件內的文字 • document.getElementById("p1").innerHTML="Hi!"; •
改變元件的樣式 • document.body.style.color="blue"; • document.body.style.backgroundImage 69
25.Cookie • 常見cookie應用 • 訪客姓名 • 使用者密碼 • 日期時間 70
用Cookie記錄來訪者姓名 • 頁面載入時先檢查使用者是否有來過 • 取出cookie裡面的username • 有來過則秀出來訪者姓名 • 沒來過就提示使用者輸入並記錄 •
寫入cookie 71
26.表單驗證 • 是否有沒填的欄位? • if(value==null | value=="") • 是否在該填數值的地方卻填了文字? •
用isNaN()判斷,true表示不是數字 • 是否是有效的email位址? 72
email驗證規則 • 一定要有@以及至少一個. • @不可以是第一個字元 • 最後一個 . 必須在@之後且不可相連 •
最後一個 . 之後最少還有2個字元 • atPos!=-1, lastDotPos!=-1 • atPos!=0 • lastDotPos – atPos > 1 • mailtext.length>lastDotPos+2 73
27.定時器 • setTimeout( ):特定時間之後做什麼事情(一次) • clearTimeout( ):解除setTimeout • setInterval( ):每隔多少時間之後做什麼事情(反覆)
• clearInterval( ):解除setInterval 74
27.Lab 密碼鎖炸彈 75
28.自訂物件 • [方法一]直接建立一個新物件 76
28.自訂物件 • [方法二]直接建立一個新物件(寫在一起) 77
28.自訂物件 • [方法三]先宣告,再使用 78