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
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
680
Other Decks in Technology
See All in Technology
AI時代の「技術的負債」の変質ー概念の終焉と再解釈、エージェントと共に向かう先
nwiizo
1
3.1k
時うどん〜Socket.getifaddrsで学ぶネットワーク編 / Tokiudon: The Socket.getifaddrs Edition
coe401_
4
210
SREは、MCPとAutopilotをこう使え!
kazumax55
3
950
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
180
絵ではじめるKubernetesセキュリティ
aoi1
4
700
2026_devsumi_ozono.pdf
o3
3
550
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
140
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
3
580
CLIライブラリ開発を支える技術
htnabe
0
140
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
30
18k
[Kiro Meetup #7] Kiro Crew Dive Deep
konippi
0
170
JSONataとAWS Step Functionsで目指すRuntimelessな世界
mu7889yoon
0
410
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1033
470k
The Invisible Side of Design
smashingmag
301
52k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
550
Docker and Python
trallard
47
4.2k
Faster Mobile Websites
deanohume
310
32k
Speed Design
sergeychernyshev
33
2.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Test your architecture with Archunit
thirion
2
2.4k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
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