Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
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
330
Design Voice-First Games for Alexa
ryan403
0
87
AI Teaching Talk
ryan403
0
150
Cognitive Service
ryan403
0
120
jQuery & API Practices
ryan403
0
150
CSS Practices
ryan403
1
180
JavaScript Practices
ryan403
0
110
Web Programming - Lesson 6
ryan403
1
660
Web Programming - Lesson 7
ryan403
1
660
Other Decks in Technology
See All in Technology
When Platform Engineering Meets GenAI
sucitw
0
130
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
140
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
410
GitHub Copilot app最速の発信の裏側
tomokusaba
1
190
SONiCのLinuxベースを活かしたZabbix監視
sonic
0
230
自宅LLMの話
jacopen
1
650
アジャイルな経理と Claude Code と経営の未来
kawaguti
PRO
3
160
20260619 私の日常業務での生成 AI 活用
masaruogura
1
230
Agile and AI Redmine Japan 2026
hiranabe
3
280
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
2k
iAEONの段階的リアーキテクト戦略 / iAEON's_Gradual_Re-architecture_Strategy
aeonpeople
0
230
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1.3k
Featured
See All Featured
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Mind Mapping
helmedeiros
PRO
1
250
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
320
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
140
Fireside Chat
paigeccino
42
4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.5k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
How STYLIGHT went responsive
nonsquared
100
6.2k
Context Engineering - Making Every Token Count
addyosmani
9
970
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
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