摘要:編程藝術(shù)第版筆記第章簡(jiǎn)史的起源是公司和公司合作開發(fā)的。第章文檔對(duì)象用戶定義對(duì)象內(nèi)建對(duì)象如等。宿主對(duì)象由瀏覽器提供的對(duì)象。偽協(xié)議非標(biāo)準(zhǔn)化的協(xié)議。結(jié)構(gòu)樣式行為要分離。壓縮腳本第章案例研究圖片庫(kù)改進(jìn)版共享事件函數(shù)需要多個(gè)函數(shù)都在頁(yè)面加載時(shí)執(zhí)行。
《JavaScript DOM 編程藝術(shù)(第2版)》筆記
第1章:JavaScript 簡(jiǎn)史JavaScript 的起源
JavaScript 是 Netscape 公司和 Sun 公司合作開發(fā)的。
DOM
DOM 是一套對(duì)文檔的內(nèi)容進(jìn)行抽象和概念化的方法。
瀏覽器戰(zhàn)爭(zhēng)
今天,幾乎所有的瀏覽器都內(nèi)置了對(duì) DOM 的支持,只要遵循 DOM 標(biāo)準(zhǔn),就可以放心大膽的去做。第2章:JavaScript 語(yǔ)法
語(yǔ)句
建議在每條語(yǔ)句末尾都加上分號(hào)。
注釋
// 單行注釋 /* 多行注釋 多行注釋*/
變量
var mood = "happy"; var age = 33;
數(shù)據(jù)類型
字符串
數(shù)值
布爾值
數(shù)組
數(shù)組
關(guān)聯(lián)數(shù)組
對(duì)象
操作符
算術(shù)操作符
+ ,-,*,/,++,--,+=
比較操作符
>,=,<,>=,<=,==,!=,===.......
==并不表示嚴(yán)格相等,認(rèn)為 false 與 "" 表示的含義相同。
false == ""; // true
=== 進(jìn)行嚴(yán)格比較,不僅比較值,而且比較變量的類型。
false === ""; // false
邏輯操作符
條件語(yǔ)句和循環(huán)語(yǔ)句
if (condions) { statemen}
while循環(huán)
while (conditions) { statements; }
for 循環(huán)
函數(shù)與對(duì)象
函數(shù):
function name(arguments) { statements; }
對(duì)象(object):
對(duì)象是一種非常重要的數(shù)據(jù)類型。
對(duì)象的兩種訪問(wèn)形式:
屬性 Object.property
方法 Object.method()
宿主對(duì)象:在Web應(yīng)用中就是由瀏覽器提供的預(yù)定義對(duì)象。第3章:DOM
DOM:
文檔:D (document)
對(duì)象:O(object)
用戶定義對(duì)象
內(nèi)建對(duì)象:如 Array,Math,Data等。
宿主對(duì)象:由瀏覽器提供的對(duì)象。
模型: M(model)
節(jié)點(diǎn)(node):
元素節(jié)點(diǎn)
文本節(jié)點(diǎn)
屬性節(jié)點(diǎn)
獲取元素:
getElementById
getElementsByTagName
getElementsByClassName
獲取屬性:
getAttribute
設(shè)置屬性:
setAttribute
第4章:案例研究:JavaScript圖片庫(kù)介紹了 DOM 提供的幾個(gè)新屬性:
childNodes
nodeType
nodeValue
firstChild
lastChild
第5章:最佳實(shí)戰(zhàn) 平穩(wěn)退化平穩(wěn)退化(graceful degradation):正確使用 JavaScript 腳本,可以讓訪問(wèn)者在他們的瀏覽器不支持 JavaScript 的情況下仍然能順利地瀏覽你的網(wǎng)站。不能平穩(wěn)退化會(huì)影響你的網(wǎng)頁(yè)在搜索引擎上的排名。
"javascript:" 偽協(xié)議:這種做法非常不好
真協(xié)議:用來(lái)在因特網(wǎng)上的計(jì)算機(jī)之間傳輸數(shù)據(jù)包,如HTTP協(xié)議(http://)、FTP協(xié)議(ftp://)等。
偽協(xié)議:非標(biāo)準(zhǔn)化的協(xié)議。
// 用"javascript:" 偽協(xié)議調(diào)用 popUp()函數(shù): Example
內(nèi)嵌的事件處理函數(shù)
Example
非常不好,因?yàn)?b>#只是創(chuàng)建了一個(gè)空鏈接。
平穩(wěn)退化辦法:將 href 屬性設(shè)置為真實(shí)存在的 URL 地址,讓它成為一個(gè)有效的鏈接。
Example
這樣,即使 javascript 被禁止,這個(gè)鏈接也是可用的。
漸進(jìn)增強(qiáng)漸進(jìn)增強(qiáng)就是用一些額外的信息層去包裹原始數(shù)據(jù)。按照“漸進(jìn)增強(qiáng)”原則創(chuàng)建出來(lái)的網(wǎng)頁(yè)幾乎都符合“平穩(wěn)退化”原則。
結(jié)構(gòu)、樣式、行為要分離。
向后兼容
對(duì)象檢測(cè)
// 例如 if (!document.getElementById) { return false; }
瀏覽器嗅探技術(shù)
通過(guò)提取瀏覽器供應(yīng)商提供的信息來(lái)解決向后兼容問(wèn)題。性能考慮
盡量少訪問(wèn)DOM和盡量減少標(biāo)記
合并和放置腳本
推薦把 functionA.js,functionB.js,functionC.js合并到一個(gè)腳本文件中,這樣可以減少加載頁(yè)面時(shí)發(fā)送的請(qǐng)求數(shù)量。
把 標(biāo)簽都放到文檔的末尾
標(biāo)記之前。因?yàn)槲挥?b>
中的腳本會(huì)導(dǎo)致瀏覽器無(wú)法并行加載其他文件。
壓縮腳本
JSMin(http://javascript.crockford.c...)
YUI Compressor
第6章:案例研究:圖片庫(kù)改進(jìn)版 共享onload事件:addLoadEvent()函數(shù)需要多個(gè)函數(shù)都在頁(yè)面加載時(shí)執(zhí)行。addLoadEvent只有一個(gè)參數(shù):打算在頁(yè)面加載完畢時(shí)執(zhí)行的函數(shù)的名字。
把現(xiàn)有的 window.onload 事件處理函數(shù)的值存入變量 oldonload;
如果這個(gè)處理函數(shù)上還沒(méi)有綁定任何函數(shù),就像平時(shí)那樣把新函數(shù)添加給它;
如果這個(gè)處理函數(shù)上已經(jīng)綁定了一些函數(shù),就把新函數(shù)追加到現(xiàn)有指令的末尾。
function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != "function") { window.onload = func; } else { window.onload = function (){ oldonload(); func(); } } }第7章 動(dòng)態(tài)創(chuàng)建標(biāo)記 動(dòng)態(tài)添加
注意:用document.createElement創(chuàng)建一個(gè)空白的p元素,想在p元素內(nèi)部添加內(nèi)容,實(shí)際上內(nèi)容也是一個(gè)文本節(jié)點(diǎn),所以應(yīng)該document.createTextNode創(chuàng)建一個(gè)文本節(jié)點(diǎn),再用.appendChild添加到p節(jié)點(diǎn)中。
window.onload = function () { var testdiv = document.getElementById("testdiv"); var para = document.createElement("p"); // 創(chuàng)建 p 元素節(jié)點(diǎn) var txt1 = document.createTextNode("This is"); // 創(chuàng)建 文本節(jié)點(diǎn) var em = document.createElement("em"); // 創(chuàng)建 em 元素節(jié)點(diǎn) var txt2 = document.createTextNode("content."); // 創(chuàng)建 文本節(jié)點(diǎn) var txt3 = document.createTextNode("my "); // 創(chuàng)建 文本節(jié)點(diǎn) testdiv.appendChild(para); // 將 p 元素節(jié)點(diǎn)添加到 div 中 para.appendChild(txt1); // 將文本節(jié)點(diǎn)添加到 p 元素中 para.appendChild(em); para.appendChild(txt2); em.appendChild(txt3); // 將文本節(jié)點(diǎn)添加到 em 元素中 }在現(xiàn)有元素后插入一個(gè)元素:insertAfter()函數(shù)
function insertAfter(newElement, targetElement) { var parent = targetElement.parentNode; if (parent.lastChild == targetElement) { parent.appendChild(newElement); } else { parent.insertBefore(newElement, targetElement.nextSibling); } }第8章:充實(shí)文檔的內(nèi)容
把文檔里的縮略語(yǔ)顯示為一個(gè)“縮略語(yǔ)列表”
為文檔里引用的每段文獻(xiàn)節(jié)選生成一個(gè)“文獻(xiàn)來(lái)源鏈接”
把文檔所支持的快捷鍵線是位于分“快捷鍵清單”
第9章:CSS-DOM給一個(gè)元素追加新的 class:
function addClass(element,value) { if (!element.className) { element.className = value; } else { newClassName = element.className; newClassName+= " "; newClassName+= value; element.className = newClassName; } }第10章 :用JavaScript實(shí)現(xiàn)動(dòng)畫效果
位置position
static
fixed
relative
absolute
時(shí)間
var variable = setTimeout("function",interval)
clearTimeout(variable)
parseInt把字符串里的數(shù)值信息提取出來(lái)
第11章:HTML5canvas
音頻和視頻
表單
第12章:綜合示例文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/54816.html
摘要:編程藝術(shù)第版筆記第章簡(jiǎn)史的起源是公司和公司合作開發(fā)的。第章文檔對(duì)象用戶定義對(duì)象內(nèi)建對(duì)象如等。宿主對(duì)象由瀏覽器提供的對(duì)象。偽協(xié)議非標(biāo)準(zhǔn)化的協(xié)議。結(jié)構(gòu)樣式行為要分離。壓縮腳本第章案例研究圖片庫(kù)改進(jìn)版共享事件函數(shù)需要多個(gè)函數(shù)都在頁(yè)面加載時(shí)執(zhí)行。 《JavaScript DOM 編程藝術(shù)(第2版)》筆記 第1章:JavaScript 簡(jiǎn)史 JavaScript 的起源 JavaScript 是...
摘要:編程藝術(shù)第版筆記第章簡(jiǎn)史的起源是公司和公司合作開發(fā)的。第章文檔對(duì)象用戶定義對(duì)象內(nèi)建對(duì)象如等。宿主對(duì)象由瀏覽器提供的對(duì)象。偽協(xié)議非標(biāo)準(zhǔn)化的協(xié)議。結(jié)構(gòu)樣式行為要分離。壓縮腳本第章案例研究圖片庫(kù)改進(jìn)版共享事件函數(shù)需要多個(gè)函數(shù)都在頁(yè)面加載時(shí)執(zhí)行。 《JavaScript DOM 編程藝術(shù)(第2版)》筆記 第1章:JavaScript 簡(jiǎn)史 JavaScript 的起源 JavaScript 是...
摘要:邏輯非操作符只能作用于單個(gè)邏輯操作數(shù),其結(jié)果是把那個(gè)邏輯操作數(shù)所返回的布爾值取反。如果那個(gè)邏輯操作數(shù)所返回的布爾值是,邏輯非操作符將把它取反為為了避免產(chǎn)生歧義,上面這條語(yǔ)句把邏輯操作數(shù)放在了括號(hào)里,使邏輯非操作符作用于括號(hào)里的所有內(nèi)容。 算術(shù)操作符 加減乘除這些算術(shù)操作中的每一種都必須借助于相應(yīng)的操作符才能完成。操作符是JavaScript為完成各種操作而定義的一些符號(hào)。等號(hào)(=)、加...
摘要:邏輯非操作符只能作用于單個(gè)邏輯操作數(shù),其結(jié)果是把那個(gè)邏輯操作數(shù)所返回的布爾值取反。如果那個(gè)邏輯操作數(shù)所返回的布爾值是,邏輯非操作符將把它取反為為了避免產(chǎn)生歧義,上面這條語(yǔ)句把邏輯操作數(shù)放在了括號(hào)里,使邏輯非操作符作用于括號(hào)里的所有內(nèi)容。 算術(shù)操作符 加減乘除這些算術(shù)操作中的每一種都必須借助于相應(yīng)的操作符才能完成。操作符是JavaScript為完成各種操作而定義的一些符號(hào)。等號(hào)(=)、加...
摘要:邏輯非操作符只能作用于單個(gè)邏輯操作數(shù),其結(jié)果是把那個(gè)邏輯操作數(shù)所返回的布爾值取反。如果那個(gè)邏輯操作數(shù)所返回的布爾值是,邏輯非操作符將把它取反為為了避免產(chǎn)生歧義,上面這條語(yǔ)句把邏輯操作數(shù)放在了括號(hào)里,使邏輯非操作符作用于括號(hào)里的所有內(nèi)容。 算術(shù)操作符 加減乘除這些算術(shù)操作中的每一種都必須借助于相應(yīng)的操作符才能完成。操作符是JavaScript為完成各種操作而定義的一些符號(hào)。等號(hào)(=)、加...
閱讀 550·2021-11-25 09:44
閱讀 2636·2021-11-24 09:39
閱讀 2305·2021-11-22 15:29
閱讀 3520·2021-11-15 11:37
閱讀 3379·2021-09-24 10:36
閱讀 2507·2021-09-04 16:41
閱讀 992·2021-09-03 10:28
閱讀 1833·2019-08-30 15:55