DOM文檔對象模型
DOM節(jié)點:
整個文檔是一個文檔節(jié)點
每個HTML元素是元素節(jié)點
HTML元素內(nèi)的文本是文本節(jié)點
每個HTML屬性是屬性節(jié)點
注釋是注釋節(jié)點
節(jié)點的屬性:
nodeName:
屬性指定節(jié)點的節(jié)點名稱
如果節(jié)點是元素節(jié)點,則nodeName屬性返回標(biāo)簽名嵌器。
如果節(jié)點是屬性節(jié)點戴尸,則nodeName屬性返回屬性的名稱憔鬼。
文本節(jié)點的nodeName:返回#text
文檔節(jié)點的nodeName:返回#document
nodeValue:設(shè)置或返回指定節(jié)點的節(jié)點值
對于文本節(jié)點圾另,nodeValue=文本值對于屬性節(jié)點,nodeValue=屬性值
對于元素節(jié)點术辐,返回null
nodeType:返回以數(shù)字值返回指定節(jié)點的節(jié)點類型贷揽。
如果節(jié)點是元素節(jié)點,則nodeType屬性將返回1镜悉。
如果節(jié)點是屬性節(jié)點祟辟,則nodeType屬性將返回2。
如果節(jié)點是文本節(jié)點侣肄,則nodeType屬性將返回3旧困。
如果節(jié)點是注釋節(jié)點,則nodeType屬性將返回8稼锅。
如果節(jié)點是文檔節(jié)點吼具,則nodeType屬性將返回9。
firstChild:childNodes (孩子節(jié)點數(shù)組)列表中第一個節(jié)點矩距。
lastChild:childNodes (孩子節(jié)點數(shù)組)列表中的最后一個節(jié)點拗盒。
parentNode:返回父節(jié)點
previousSibling:返回當(dāng)前節(jié)點之前的節(jié)點。
nextSibling:返回當(dāng)前節(jié)點的下一個節(jié)點锥债。
attributes:返回節(jié)點屬性的對象集合
childNodes:返回子節(jié)點對象集合陡蝇,是數(shù)組對象,包含文本節(jié)點和元素節(jié)點
children:返回子節(jié)點對象集合哮肚,是數(shù)組對象登夫,只包含元素節(jié)點
節(jié)點樹中的節(jié)點彼此擁有層級關(guān)系
在節(jié)點樹中,頂端節(jié)點被稱為根(root)
每個節(jié)點都有父節(jié)點允趟、除了根(它沒有父節(jié)點)
一個節(jié)點可擁有任意數(shù)量的子節(jié)點
同胞是擁有相同父節(jié)點的節(jié)點
1.查找元素
getElementById()方法可返回對擁有指定ID的第一個對象的引用
getElementsByName()方法可返回帶有指定名稱的對象的集合
getElementsByTagName()方法可返回帶有指定標(biāo)簽名的對象的集合
getElementsByClassName()返回文檔中所有指定類名的元素集合
2創(chuàng)建標(biāo)簽方法
document.createElement()//創(chuàng)建一個元素節(jié)點
document.createTextNode()//創(chuàng)建一個文本節(jié)點
parentNode.appendChild(newChild) //newChild被添加到孩子列表中的末端悼嫉。
innerHTML屬性設(shè)置或返回標(biāo)簽的開始和結(jié)束標(biāo)簽之間的HTML
getAttribute()方法返回指定屬性名的屬性值
setAttribute()方法添加指定的屬性,并為其賦指定的值拼窥。
如果這個指定的屬性已存在戏蔑,則僅設(shè)置/更改值
BOM瀏覽器對象模型
他提供了很多對象,用來訪問瀏覽器的功能,Bom的核心對象是window鲁纠,他表示瀏覽器的一個實例
存儲
localStorage對象存儲的數(shù)據(jù)沒有時間限制总棵。第二天、第二周或下一年之后改含,數(shù)據(jù)依然可用
sessionStorage方法針對一個session進行數(shù)據(jù)存儲情龄。當(dāng)用戶關(guān)閉瀏覽器窗口后,數(shù)據(jù)會被刪除
了解:保存數(shù)據(jù):localStorage.setItem(key,value);
讀取數(shù)據(jù):localStorage.getItem(key);
刪除單個數(shù)據(jù):localStorage.removeItem(key);
刪除所有數(shù)據(jù):localStorage.clear();
得到某個索引的key:localStorage.key(index);
計時器
1.一次性計時器:僅在指定的延遲時間之后觸發(fā)一次。
setTimeout()就是人為設(shè)定一個時間后會進行一些事件的觸發(fā)
方法接收兩個參數(shù)骤视,第一個參數(shù)是要進行觸發(fā)的事件鞍爱,第二個參數(shù)是指定的時間間隔。
2.間隔性觸發(fā)計時器:每隔一定的時間間隔就觸發(fā)一次专酗。
setInterval()
方法同樣接收兩個參數(shù)睹逃,第一個參數(shù)是要進行觸發(fā)的事件,第二個參數(shù)是指定的時間間隔祷肯。
1.取消一次性計時器
clearTimeout
2.取消間隔性觸發(fā)計時器
clearInterval
懶加載和預(yù)加載
懶加載也叫延遲加載:JS圖片延遲加載延遲加載圖片或符合某些條件時才加載某些圖片沉填。
預(yù)加載:提前加載圖片,當(dāng)用戶需要查看時可直接從本地緩存中渲染佑笋。
兩種技術(shù)的本質(zhì):兩者的行為是相反的翼闹,一個是提前加載,一個是遲緩甚至不加載蒋纬。懶加載對服務(wù)器前端有一定的緩解壓力作用猎荠,預(yù)加載則會增加服務(wù)器前端壓力。
懶加載的意義及實現(xiàn)方式有:
意義:懶加載的主要目的是作為服務(wù)器前端的優(yōu)化蜀备,減少請求數(shù)或延遲請求數(shù)关摇。
實現(xiàn)方式:
1.第一種是純粹的延遲加載,使用setTimeOut或setInterval進行加載延遲.
2.第二種是條件加載琼掠,符合某些條件,或觸發(fā)了某些事件才開始異步下載停撞。
1.第三種是可視區(qū)加載瓷蛙,即僅加載用戶可以看到的區(qū)域,這個主要由監(jiān)控滾動條來實現(xiàn)戈毒,一般會在距用戶看到某圖片前一定距離遍開始加載艰猬,這樣能保證用戶拉下時正好能看到圖片。
頁面導(dǎo)入樣式時埋市,使用link和@import有什么區(qū)別冠桃?
(1)link屬于XHTML標(biāo)簽,除了加載CSS外道宅,還能用于定義RSS,定義rel連接屬性等作用食听;而@import是CSS提供的,只能用于加載CSS;
(2)頁面被加載的時污茵,link會同時被加載樱报,而@import引用的CSS會等到頁面被加載完再加載;
(3)import是CSS2.1提出的,只在IE5以上才能被識別泞当,而link是XHTML標(biāo)簽迹蛤,無兼容問題;