国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
JS中DOM重點基礎(chǔ)知識實驗(全)

文檔:一個頁面就是一個文檔。

元素:頁面中所有的標簽都是元素,也可以叫對象。

節(jié)點:頁面中所有的內(nèi)容都是節(jié)點,標簽,屬性,文本。

 

 

在JS中操作dom,設(shè)置css樣式時,樣式的名稱如background-color,在js中一律用駝峰寫法,backgroundColor

 

通過JS設(shè)置元素行內(nèi)樣式,操作style屬性即可

 

 

通過JS設(shè)置元素的類樣式,不用class關(guān)鍵字,應(yīng)使用className

   

 

 

a 標簽點擊事件有默認的跳轉(zhuǎn),想要阻止默認的跳轉(zhuǎn),在點擊事件函數(shù)的最后return false;

 

 

若點擊事件函數(shù)中有多條語句執(zhí)行,封裝成函數(shù)的形式,應(yīng)將函數(shù)返回,才能阻止a的默認跳轉(zhuǎn)。

 

 

 

JS中的事件:onclick,onmouseover,onmouseout,onfocus,onblur等等。

 

原生JS選擇器:

document.getElementById(),

document.getElementsByClassName(),

document.getElementsByTagName().

document.getElementsByName()

 

H5選擇器:

document.querySelector(),

document.querySelectorAll()

 

 

TextContent與innerText

 

IE8不支持:textContent

 

 

InnerText和innerHTML

 

InnerText設(shè)置:按純文本的方式解析內(nèi)容,innerHTML設(shè)置:按html的方式解析內(nèi)容

InnerText獲取:不僅能獲得當(dāng)前元素的內(nèi)容,還能獲取子元素中的文本內(nèi)容。

InnerHTML獲取:同樣能獲取到子元素,但包含了子元素的標簽

結(jié)果:

 

獲取/設(shè)置/刪除自定義(自帶屬性)屬性:getAttribute()/setAttribute()/removeAttibute()

 

Tab的實現(xiàn),

節(jié)點分為:標簽節(jié)點,屬性節(jié)點,文本節(jié)點

節(jié)點的屬性:

nodeType:取值(1,2,3)

1代表標簽,2代表標簽的屬性,3代表文本內(nèi)容

nodeName:標簽節(jié)點的nodeName是大寫的標簽名字,屬性節(jié)點的nodeName是小寫的屬性名字,文本節(jié)點的nodeName是#text

nodeValue:標簽節(jié)點的的nodeValue是null,屬性節(jié)點的nodeValue是屬性值,文本節(jié)點的nodeValue是文本內(nèi)容

 

 

獲取標簽的父節(jié)點/父元素?

parentNode/parentElement

-------------------------------------------------------

 

獲取子節(jié)點/子元素

ChildNodes/children

 

Nodelist中有9個節(jié)點的原因在于文本是節(jié)點,空白文本也是節(jié)點,一般可以認為:

子節(jié)點的個數(shù) = 子元素的個數(shù) * 2 +1(9 = 4*2+1)

 

如何獲取屬性屬性節(jié)點?

GetAttributeNode()

對應(yīng)div中id這個屬性節(jié)點來說,它的nodeType=2,nodeName=屬性id,nodeValue屬性值box4,基本上用不上。了解即可。

 

 

從這里開始的代碼,在IE8中存在問題,以下代碼是運行再chrome瀏覽器中的效果。

獲取第一個子節(jié)點/第一個子元素

FirstChild/firstElementChild

在IE8中(FirstChild代表著第一個子元素,firstElementChild無法識別undefined)

--------------------------------------------------

同理,獲取最后一個子節(jié)點/最后一個子元素

LastChild/lastElementChild

在IE8中(lastChild代表著最后一個子元素,lastElementChild無法識別undefined)

---------------------------------

獲取某個元素的前一個兄弟節(jié)點/前一個兄弟元素

PreviousSibling/previousElementSibling

在IE8中(PreviousSibling代表前一個兄弟元素,previousElementSibling無法識別undefined)

--------------------------------------

同理,獲取某個元素的后一個兄弟節(jié)點/后一個兄弟元素

NextSibling/nextElementSibling

在IE8中(NextSibling代表著后一個兄弟元素,nextElementSibling無法識別undefined)

 

 

封裝節(jié)點操作的兼容代碼

獲取任意元素的第一個子元素

 

 

同理獲取任意元素的最后一個子元素

 

 

 

 

創(chuàng)建元素的方式

  1. document.write(標簽以及內(nèi)容)
  2. 元素對象.innerHTML = ‘標簽以及內(nèi)容’
  3. Document.createElement(“標簽的名稱’);

 

 

Document.write(()在頁面加載完成時,向body中寫入內(nèi)容,會將body,head中的所有內(nèi)容清空后,插入當(dāng)前內(nèi)容。

當(dāng)事件觸發(fā)時執(zhí)行document.write(),意味著頁面加載完成,當(dāng)點擊按鈕時,頁面中其他內(nèi)容都會被清空。

 

-------------------------------------

使用innerHTML向標簽內(nèi)添加內(nèi)容,同樣會覆蓋當(dāng)前標簽的內(nèi)容,如果反復(fù)點擊按鈕添加元素,會導(dǎo)致反復(fù)的賦值,也就是反復(fù)的覆蓋之前插入的同樣內(nèi)容的標簽

點擊按鈕前

 

點擊按鈕后

 

 

-------------------------------

Document.createElment()創(chuàng)建元素,通過點擊按鈕會,反復(fù)的創(chuàng)建元素對象,然后通過appendChild()向后追加,插入到目標容器中。

點擊按鈕前:

點擊按鈕后:

反復(fù)點擊:

應(yīng)該避免反復(fù)點擊,創(chuàng)建預(yù)期之外的元素。

另外循環(huán)中不要寫匿名函數(shù),這樣效率會很低。

 

將標簽追加到目標容器中的方法

AppendChild():向后追加

InsertBefore(a,b) 把a插入到b的前面

首先是要插入到$$(‘box’)標簽對象的內(nèi)的,但具體在位置,由后面兩個參數(shù)確定,

Pobj是創(chuàng)建的p元素,p元素插入到$$(‘box4’)標簽對象的第一個子元素前面。

 

點擊按鈕前:

點擊按鈕后:

 

 

移除當(dāng)前元素中的子元素

A.RemoveChild(B),含義中:從A中刪除子元素B

 

 

如何控制無論按鈕點擊多少次,都只創(chuàng)建一次呢?

有則刪除,無則創(chuàng)建!

第一次點擊按鈕的時候,元素創(chuàng)建并且插入了,第二次的時候,通過id可以找到之前插入的元素,那么就刪除,然后再創(chuàng)建,插入,以此類推。著從頁面上看,無論按鈕點擊多少次,都只會有一個元素。

 

 

 

事件的綁定:當(dāng)為同一個元素多次綁定同一事件,則最后一次事件綁定生效。

結(jié)果:

那么如何讓綁定的onclick事件都生效呢?

 

其實,還有其他綁定事件的方式:addEventListener()

參數(shù)1:事件名稱,沒有on,點擊事件就是click

參數(shù)2:回調(diào)函數(shù)

參數(shù)3:布爾類型,

結(jié)果:

通過這種方法,為同一事件綁定,每次綁定的事件都會觸發(fā),不會被覆蓋,但是兼容性存在問題。(IE8不支持。)

 

為了解決IE8兼容性的問題,使用AttachEvent()

參數(shù)1:事件的類型,如點擊事件,onclick

參數(shù)2:回調(diào)函數(shù)(可以是命名函數(shù))

封裝兼容性事件函數(shù):為任意元素,綁定任意事件

-----------------------------------------------------------

在chrome下,addEventListener兼容,this的值是綁定事件的dom對象

-------------------------------------------------------------

在IE8下,attacheEvent兼容,this的值是window

 

 

為元素解除事件綁定

當(dāng)使用onclick 綁定事件時,清除事件只要將onclick指向null。

--------------------------------------------------------------------------------

當(dāng)使用addEventListener為元素添加多個相同事件,應(yīng)該命名函數(shù)作為事件處理函數(shù),便與在使用removeEventListener移除事件,方便移除具體的事件處理函數(shù)。

----------------------------------------------------------------------

 

同理,IE8下添加事件和解綁事件

 

封裝對應(yīng)的解綁事件的函數(shù)

 

 

 

事件冒泡

多個元素嵌套,由層級關(guān)系,綁定了相同的事件類型,當(dāng)內(nèi)部的元素出發(fā)事件,外面的元素也會出發(fā)事件。

 

 

當(dāng)點擊box1時:

當(dāng)點擊box2時:

當(dāng)點擊box3時:

如果都綁定了相同的事件,但是它們的事件處理函數(shù)可以完全不通,不能因為觸發(fā)子元素事件的同時,由于事件冒泡,也觸發(fā)到外層元素的事件。你可能只想干一件事,可是,由于事件冒泡卻多做了幾件事,這樣反倒會畫蛇添足。

 

如何阻止事件冒泡?

Window.event.cancelBubble = true,火狐瀏覽器不支持。Window.event是ie中標準事件對象

e.stopPropagation()   IE8不支持這個函數(shù),且IE8中沒有事件處理的默認參數(shù),在其他瀏覽器中是有e這個事件處理的默認參數(shù)的。E是火狐的標準事件對象

Box1點擊時:

Box2點擊時:

Box3點擊時:

 

事件有三個階段:事件捕獲階段,事件目標階段,事件冒泡階段

對于addEventListener()的第三個參數(shù)而言,在值是false情況下,事件處理函數(shù)的觸發(fā)按照事件冒泡來觸發(fā),而在值等于true的情況下,事件處理函數(shù)的觸發(fā)按照事件捕獲階段觸發(fā),事件捕獲與事件冒泡過程相反。事件冒泡是從內(nèi)向外觸發(fā)事件函數(shù),而事件捕獲是從外向內(nèi)觸發(fā)事件函數(shù)。即addEventListener()的第三個參數(shù)是控制事件階段(控制觸發(fā)函數(shù)的過程)

一般綁定事件,默認都是設(shè)置成事件冒泡階段,很少設(shè)置成捕獲階段。

 

---------------------------------------------------

Bom

 

瀏覽器中的頂級對象是window

頁面中的頂級對象是document

在全局環(huán)境下,也就是js的文件中,用var定義的變量,默認是掛在window對象上的

 

 

----------------------------------------------------------------

頁面加載事件

Window.onload :當(dāng)頁面上所有的標簽,屬性,文本,外部引用加載完成時,才會觸發(fā)。

在IE8中:

Window.onunload 頁面關(guān)閉后觸發(fā)事件

Window.onbeforeunload 頁面關(guān)閉前觸發(fā)函數(shù)

 

 

Location對象

Location.href = ‘’ 跳轉(zhuǎn)到指定的網(wǎng)頁

Location.assign() 挑戰(zhàn)到指定的網(wǎng)頁

Location.reload() 重新加載頁面,相當(dāng)于刷新

Location.replace() 跳轉(zhuǎn)到新的頁面,不能回到初始頁面

 

 

History 對象

History.back()

History.forward()

History.go()

 

Navigator對象

UserAgent  通過userAgent可以判斷瀏覽器類型

Platform    通過platform可以判斷瀏覽器所在的系統(tǒng)平臺

 

------------------------------------------------------------------

 

定時器、

Id = Window.setInterval() :設(shè)置一個定時器。

Window.clearInterval(id) 清除定時器。

點擊按鈕前,每秒鐘獲取當(dāng)前的時間

點擊按鈕后:停止。

----------------------------------------------------

 

SetTimeout() :設(shè)置一次性的定時器

clearTimeout():清除定時器所占用的內(nèi)存空間

1秒中之后,獲取當(dāng)前時間,輸出。只執(zhí)行一次。即使只執(zhí)行一次,也需要清理所占用的內(nèi)存空間。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
a標簽的href和onclick的區(qū)別
理解JavaScript中的事件
JS中BOM和DOM的區(qū)別與聯(lián)系
Web 前端知識點總結(jié)
JavaScript基礎(chǔ)-07-DOM
JavaScript之DOM操作
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服