本書可分為基礎(chǔ)知識(shí)、核心技術(shù)、高級(jí)應(yīng)用和項(xiàng)目實(shí)戰(zhàn)四部分內(nèi)容;A(chǔ)知識(shí)部分主要包括標(biāo)識(shí)符、關(guān)鍵字和保留字、變量、數(shù)據(jù)類型、表達(dá)式和運(yùn)算符、流程控制語句、在網(wǎng)頁中嵌入JavaScript代碼的三種方式以及程序調(diào)試方法等內(nèi)容;核心技術(shù)部分主要包括JavaScript函數(shù)、數(shù)組、JSON、字符串的處理、定時(shí)器、Math對(duì)象、Date對(duì)象、BOM對(duì)象、DOM模型以及使用DOM操作HTML文檔及表單和表格、使用JavaScript操作屬性和元素內(nèi)容、事件處理、正則表達(dá)式等內(nèi)容;高級(jí)應(yīng)用主要包括:JavaScript面向?qū)ο蠹敖M件開發(fā)、Ajax編程等內(nèi)容;項(xiàng)目實(shí)戰(zhàn)則是使用了HTML5+CSS3+JavaScript實(shí)現(xiàn)了一個(gè)云盤。
本書除了詳細(xì)介紹了JavaScript的基礎(chǔ)理論外,還詳細(xì)介紹了JavaScrilpt核心理論:“變量提升、作用域鏈、原型鏈”。本書最具特色的地方是提供了包括圖片的切換、圖片輪播、字符串查找與替換、選項(xiàng)卡、彈窗、上下文菜單、表單數(shù)據(jù)有效性校驗(yàn)、瀑布流布局、留言本的實(shí)現(xiàn)等大量實(shí)用案例。
本書可作為大中專院校計(jì)算機(jī)及相關(guān)專業(yè)以及相關(guān)培訓(xùn)機(jī)構(gòu)的教材,也可作為網(wǎng)頁設(shè)計(jì)、網(wǎng)頁制作、網(wǎng)站建設(shè)、Web前端開發(fā)等開發(fā)人員的參考書。
JavaScript是在網(wǎng)頁設(shè)計(jì)中的一種腳本語言,用于實(shí)現(xiàn)頁面特效,為用戶提供更流暢美觀的瀏覽效果,而本書的內(nèi)容正是作者基于自己多年的工程師生涯所編寫的,真正扎根企業(yè)開發(fā)實(shí)戰(zhàn),提供大量企業(yè)實(shí)用案例,面向用戶的需求,同時(shí)又能為讀者提供系統(tǒng)、詳細(xì)的JS語言基礎(chǔ)知識(shí)。購買本書的讀者還可獲得妙味課堂一年的免費(fèi)會(huì)員,可以免費(fèi)觀看妙味課堂海量教學(xué)視頻、參與社區(qū)交流討論。
劉偉,妙味課堂 miaov.com 創(chuàng)始人,擁有8年工程師生涯,10年教育行業(yè)創(chuàng)業(yè)經(jīng)歷;
《前端HTML+CSS修煉之道》作者之一,出品視頻資料影響超過 500萬以上學(xué)員,網(wǎng)上零負(fù)評(píng);現(xiàn)任開課吧合伙人、大課教研教學(xué) VP。
第 1章 JavaScript入門 1
1.1 JavaScript概述 1
1.1.1 JavaScript發(fā)展歷史 1
1.1.2 JavaScript組成部分及特點(diǎn) 2
1.1.3 JavaScript與Java的區(qū)別 3
1.1.4 JavaScript語法特點(diǎn)及編輯工具 3
1.1.5 JavaScript 的實(shí)際應(yīng)用場(chǎng)景 4
1.1.6 JavaScript實(shí)現(xiàn)網(wǎng)頁動(dòng)態(tài)變化原理以及執(zhí)行順序 5
1.2 JavaScript代碼的調(diào)試方法 6
1.2.1 使用alert()方法調(diào)試腳本代碼 6
1.2.2 使用console.log()方法調(diào)試腳本代碼 8
1.2.3 使用Chrome的“開發(fā)者工具”調(diào)試腳本代碼 10
1.3 第 一個(gè)JavaScript實(shí)例 13
1.4 標(biāo)識(shí)符、關(guān)鍵字和保留字 19
1.5 直接量 20
1.6 變量 20
1.6.1 使用var、let和const聲明變量 20
1.6.2 變量的內(nèi)存分配 23
1.6.3 變量提升和預(yù)解析 25
1.6.3 變量的作用域 32
1.6.4 作用域鏈 34
1.7 數(shù)據(jù)類型 37
1.7.1 使用typeof運(yùn)算符檢測(cè)數(shù)據(jù)類型 37
1.7.2 數(shù)字類型 38
1.7.3 字符串類型 39
1.7.4 布爾類型 41
1.7.5 函數(shù)類型 41
1.7.6 對(duì)象類型 42
1.7.7 null和undefined類型 42
1.7.8 數(shù)據(jù)類型的轉(zhuǎn)換 43
1.7.9 isNaN()的應(yīng)用 46
1.8 表達(dá)式和運(yùn)算符 48
1.8.1 算術(shù)表達(dá)式 48
1.8.2 關(guān)系表達(dá)式 50
1.8.3 邏輯表達(dá)式 51
1.8.4 賦值表達(dá)式 55
1.8.5 條件表達(dá)式 56
1.8.6 new運(yùn)算符 56
1.8.7 運(yùn)算符的優(yōu)先級(jí)及結(jié)合性 57
1.9 語句 58
1.9.1 表達(dá)式語句 58
1.9.2 聲明語句 58
1.9.3 判斷語句 59
1.9.4 循環(huán)語句 65
1.9.5 循環(huán)終止和退出語句 68
1.10 在網(wǎng)頁中嵌入JS代碼 70
1.10.1 在HTML標(biāo)簽的事件屬性中直接添加腳本 70
1.10.2 使用script標(biāo)簽插入腳本代碼 71
1.10.3 使用script標(biāo)簽鏈接外部JS文件 72
練習(xí)題 73
第 2章 Array及JSON 74
2.1 數(shù)組及其在圖片切換中的應(yīng)用 74
2.1.1 數(shù)組的創(chuàng)建及其元素的引用 75
2.1.2 數(shù)組的常用方法及屬性 75
2.1.3 數(shù)組在圖片切換中的應(yīng)用 82
2.2 JSON 85
2.2.1 JSON數(shù)據(jù)格式及JSON變量的聲明及應(yīng)用 85
2.2.2 JSON與JS對(duì)象的相互轉(zhuǎn)換及應(yīng)用 86
2.2.3 使用for-in遍歷對(duì)象屬性 87
練習(xí)題 88
第3章 使用JavaScript操作屬性及元素內(nèi)容 89
3.1 使用JavaScript操作元素屬性及樣式屬性 90
3.1.1 屬性讀、寫操作 90
3.1.2 屬性操作注意事項(xiàng) 91
3.2 使用classList屬性操作類屬性 98
3.3 使用cssText屬性設(shè)置或修改元素行內(nèi)樣式 100
3.4 使用getComputedStyle()和currentStyle獲取樣式 102
3.5 使用innerHTML屬性訪問或設(shè)置元素內(nèi)容 103
3.6 自定義屬性及其在圖片切換中的應(yīng)用 105
3.6.1 自定義開關(guān)屬性及其在圖片切換中的應(yīng)用 106
3.6.2 自定義數(shù)字屬性及其在圖片切換中的應(yīng)用 107
3.6.3 自定義索引屬性及其在圖片切換中的應(yīng)用 108
練習(xí)題 111
第4章 JavaScript函數(shù) 112
4.1 函數(shù)定義 112
4.2 return語句詳解 114
4.3 函數(shù)調(diào)用 115
4.4 arguments實(shí)參集合對(duì)象 118
4.5 使用函數(shù)封裝圖片切換代碼及函數(shù)傳參實(shí)例 120
4.6 閉包 123
4.7 this指向及this的應(yīng)用 128
4.8 內(nèi)置函數(shù) 131
練習(xí)題 133
第5章 定時(shí)器、Math對(duì)象及Date對(duì)象 134
5.1 定時(shí)器 134
5.1.1 間歇定時(shí)器的創(chuàng)建與清除 134
5.1.2 延遲定時(shí)器的創(chuàng)建和清除 136
5.1.3 使用定時(shí)器實(shí)現(xiàn)圖片輪播 137
5.2 Math對(duì)象 138
5.3 Date對(duì)象的創(chuàng)建及其常用方法 140
5.4 使用定時(shí)器、Date對(duì)象和Math對(duì)象實(shí)現(xiàn)倒計(jì)時(shí)效果 142
練習(xí)題 143
第6章 字符串 144
6.1 字符串概述 144
6.2 操作字符:charAt()、charCodeAt()和fromCharCode() 146
6.3 字符搜索方法:indexOf()和lastIndexOf() 148
6.4 截取字符串方法:substring()、substr()和slice() 150
6.5 分割字符串方法:split() 152
6.6 字符串大小寫轉(zhuǎn)換及字符串的比較 155
練習(xí)題 156
第7章 使用HTML DOM對(duì)象操作HTML文檔 156
7.1 HTML DOM概述 156
7.2 節(jié)點(diǎn)類型 157
7.2.1 document根節(jié)點(diǎn) 158
7.2.2 使用document操作cookie 160
7.2.3 元素節(jié)點(diǎn) 163
7.2.4 屬性節(jié)點(diǎn) 164
7.2.5 文本節(jié)點(diǎn) 165
7.3 使用HTML DOM訪問HTML文檔 166
7.3.1 獲取文檔元素 166
7.3.2 操作元素屬性及元素內(nèi)容 167
7.3.3 獲取子節(jié)點(diǎn) 169
7.3.4 獲取父節(jié)點(diǎn)和兄弟節(jié)點(diǎn) 171
7.3.5 獲取元素的偏移位置 172
7.3.6 獲取元素的絕對(duì)位置 174
7.3.7 獲取元素的寬、高 175
7.4 使用DOM創(chuàng)建、插入、修改和刪除節(jié)點(diǎn) 176
7.5 使用HTML DOM克隆節(jié)點(diǎn) 178
7.6 使用HTML DOM操作表單 179
7.6.1 表單對(duì)象 179
7.6.2 表單元素對(duì)象 180
7.7 使用HTML DOM操作表格 184
練習(xí)題 188
第8章 BOM對(duì)象 189
8.1 BOM結(jié)構(gòu) 189
8.2 window對(duì)象 189
8.3 navigator對(duì)象 195
8.4 location對(duì)象 197
8.5 history對(duì)象 198
8.6 screen對(duì)象 199
練習(xí)題 200
第9章 事件處理 200
9.1 事件處理概述 200
9.2 事件處理程序的綁定 201
9.2.1 使用HTML標(biāo)簽的事件屬性綁定處理程序 202
9.2.2 使用事件源的事件屬性綁定處理程序 203
9.2.3 使用addEventListener()綁定處理程序 204
9.3 事件對(duì)象 205
9.4 事件流 206
9.4.1 事件冒泡 206
9.4.2 事件捕獲 211
9.4.3 W3C標(biāo)準(zhǔn)事件流 213
9.5 綁定事件的取消 214
9.6 事件默認(rèn)行為的取消 215
9.7 使用oncontextmenu事件自定義上下文菜單 217
9.8 焦點(diǎn)事件 218
9.9 鍵盤事件 220
9.10 鼠標(biāo)拖拽事件 223
9.10.1 鼠標(biāo)拖拽原理 223
9.10.2 鼠標(biāo)拖拽問題及其解決方法 224
9.10.3 鼠標(biāo)拖拽事件應(yīng)用 227
9.11 鼠標(biāo)滾輪事件 232
練習(xí)題 233
第 10章 使用正則表達(dá)式進(jìn)行模式匹配 234
10.1 模式匹配的引出:找出字符串中的所有數(shù)字 234
10.2 正則表達(dá)式的定義 235
10.2.1 正則表達(dá)式的定義方式 235
10.2.2 正則表達(dá)式中的轉(zhuǎn)義字符 236
10.2.3 正則表達(dá)式中的字符類 238
10.2.4 正則表達(dá)式中的量詞 239
10.2.6 正則表達(dá)式中的首尾匹配、排除符和選擇符 240
10.2.7 正則表達(dá)式中的分組 242
10.2.8 正則表達(dá)式中的修飾符 243
10.3 使用RegExp對(duì)象進(jìn)行模式匹配 244
10.3.1 使用exec()進(jìn)行模式匹配 244
10.3.2 使用test()進(jìn)行模式匹配 245
10.4 使用string對(duì)象的模式匹配方法進(jìn)行匹配 248
10.4.1 使用match()進(jìn)行模式匹配 248
10.4.2 使用replace()進(jìn)行模式匹配 249
10.4.3 使用search()進(jìn)行模式匹配 251
10.4.4 使用字符串的模式匹配方法實(shí)現(xiàn)數(shù)據(jù)有效性校驗(yàn) 252
練習(xí)題 253
第 11章 JavaScript面向?qū)ο蠹敖M件開發(fā) 254
11.1 JavaScript面向?qū)ο缶幊谈攀觥?54
11.2 JavaScript對(duì)象的創(chuàng)建 255
11.3 對(duì)象屬性和方法的訪問方式 269
11.4 原型鏈 270
11.5 使用面向?qū)ο蠓绞骄帉戇x項(xiàng)卡 273
11.6 包裝對(duì)象 278
11.7 toString()和valueOf() 279
11.8 JavaScript對(duì)象的繼承 281
11.8.1 通過原型鏈繼承對(duì)象 281
11.8.2 通過借用構(gòu)造函數(shù)實(shí)現(xiàn)繼承 284
11.8.3 組合繼承 286
11.8.4 拷貝繼承 287
11.8.5 原型繼承 289
11.8.6 寄生式繼承 290
11.8.7 寄生組合式繼承 292
11.8.8 類繼承 293
11.8.9 對(duì)象繼承在拖拽事件中的應(yīng)用 298
11.9 JavaScript組件開發(fā) 301
11.9.1 組件開發(fā)概述 301
11.9.2 拖拽組件的創(chuàng)建及應(yīng)用 302
11.9.3 彈窗組件的創(chuàng)建及應(yīng)用 304
11.9.4 自定義事件 312
練習(xí)題 316
第 12章 Ajax編程 317
12.1 XMLHttpRequest對(duì)象 317
12.1.1 創(chuàng)建XMLHttpRequest對(duì)象實(shí)例 318
12.1.2 發(fā)送GET和POST請(qǐng)求 319
12.1.3 獲取服務(wù)端返回的數(shù)據(jù) 324
12.2 使用 Ajax實(shí)現(xiàn)瀑布流布局 328
12.2.1 使用浮動(dòng)布局瀑布流 328
12.2.2 使用絕對(duì)定位布局瀑布流 333
12.3 使用Ajax開發(fā)留言本 336
12.3.1 留言本涉及的數(shù)據(jù)庫表 336
12.3.2 留言本的HTML和CSS代碼及初始狀態(tài) 336
12.3.3 留言本的用戶注冊(cè) 340
12.3.4 登陸留言本 343
12.3.4 退出留言本 345
12.3.5 發(fā)表留言 346
12.3.6 列表顯示留言 349
12.3.7 使用Ajax實(shí)現(xiàn)類瀑布流布局效果的留言本 352
12.3.8 留言本的“頂”和“踩” 353
12.3 使用JSONP解決Ajax跨域問題 355
12.3.1 JSONP簡(jiǎn)介 355
12.3.2 使用JSONP實(shí)現(xiàn)百度下拉提示 358
練習(xí)題 361
第 13章 Javascript項(xiàng)目實(shí)戰(zhàn) - 云盤 361
13.1 項(xiàng)目結(jié)構(gòu) 362
13.1.1 自適應(yīng)屏幕的頁面框架 362
13.1.2 頁面頭部布局 366
13.1.3 側(cè)邊欄布局 367
13.1.4 路徑導(dǎo)航布局 369
13.1.5 文件夾區(qū)域布局 371
13.1.6 彈窗及右鍵菜單 373
13.2 數(shù)據(jù)結(jié)構(gòu) 377
13.2.1 查找自己 378
13.2.2 查找子級(jí) 379
13.2.3 查找父級(jí) 379
13.2.4 查找所有父級(jí) 379
13.3 視圖渲染 379
13.3.1 側(cè)邊欄菜單渲染 379
13.3.2 路徑導(dǎo)航渲染 381
13.4 三大區(qū)域視圖切換 381
13.4.1 左側(cè)菜單點(diǎn)擊事件添加 382
13.4.2 路徑導(dǎo)航點(diǎn)擊事件添加 382
13.4.3 文件夾點(diǎn)擊事件添加 383
13.5 新建文件夾 383
13.5.1 添加一條新數(shù)據(jù) 383
13.5.2 文件夾命名處理 383
13.5.3 提示信息彈窗 384
13.5.4 完成新建文件夾功能 385
13.6 文件夾的右鍵菜單 385
13.6.1 右鍵菜單位置處理 385
13.6.2 刪除當(dāng)前文件夾 386
13.6.3 文件夾移動(dòng)到 387
13.6.4 文件夾重命名 389
13.7 文件夾的選中及批量操作 392
13.7.1 點(diǎn)擊全選框勾選全部 392
13.7.2 文件的選中操作 393
13.7.2 框選操作 393
13.7.3 批量操作文件夾 395