圖不重要妻坝,看字!
有一定的JS基礎(chǔ)后赚抡,就可以進入dom環(huán)節(jié)了纠屋,dom使得網(wǎng)頁的交互效果得到完美呈現(xiàn)售担,可以說dom真正打開了網(wǎng)頁和用戶之間的通道橋梁,日常生活中我們點擊鼠標(biāo)岩四,敲擊鍵盤哥攘,甚至于無意間觸碰到屏幕(觸摸屏),都會或多或少或大或小的得到一些躲藏起來的內(nèi)容耕姊。
打開淘寶栅葡,在輸入框輸入商品時,下拉的推薦商品:
或是當(dāng)打開某個不想再瀏覽的網(wǎng)頁時规脸,右上角的那個×:
這些大部分都存在DOM的身影莫鸭。
這里的“DOM”横殴,通常來講,叫做DOM 文檔對象模型氏身,通過操縱DOM,可以隨意更改內(nèi)容航徙,樣式陷虎,或者增刪改查尚猿,因為網(wǎng)頁是在瀏覽器中顯示的,整個瀏覽器是BOM伴榔,所以DOM其實是BOM的一部分庄萎,BOM 就是 window對象 ,DOM 就是 document(文檔)對象援奢。
獲热碳瘛:
如果該元素砸脊,是網(wǎng)頁的必備元素,而且只能有一個脓规,可以通過document對象直接獲取侨舆。比如:圖片的src屬性:
任由我們怎么去修飾圖片的顯示绢陌,但它本身的路徑屬性是獨有的脐湾,所以我們可以直接獲取:
更多的時候愁铺,我要需要獲取網(wǎng)頁中的指定元素,這就需要專門的方法來獲取了茂洒,這里列舉幾個方法:
getElementById()方法瓶竭,根據(jù)元素的id屬性值來獲取指定的元素斤贰,因為ID的唯一性,使得該方法需要搭配ID選擇器使用瓷叫,如果網(wǎng)頁里ID重復(fù)時送巡,它會獲取第一個:
getElementsByTagName()方法授艰,根據(jù)元素的標(biāo)簽名獲取所有該元素,該方法獲取的是所有該標(biāo)簽的元素糟需,以偽數(shù)組的形式呈現(xiàn):
getElementsByClassName()方法洲押,根據(jù)元素的類選擇器名稱獲取所有該元素圆凰,該方法獲取的途徑是標(biāo)簽的類,也就是class屬性挑童,由于擁有該屬性的標(biāo)簽可能不只一個跃须,所以該方法獲得的也是一個偽數(shù)組(還有菇民,可以看方法名投储,凡是帶Elements的大多數(shù)都是偽數(shù)組):
getElementsByName()方法玛荞,根據(jù)元素的name屬性值獲取所有該元素呕寝,相同的性質(zhì)壁涎,有name屬性的標(biāo)簽也不少:
querySelector()方法怔球,根據(jù)選擇器的名稱返回元素,如果有多個元素闽巩,只返回第一個元素担汤,這個方法就比較常用了,而且IE這個啥也不咋適配的瀏覽器現(xiàn)在幾乎不咋能見到了隅很,可以多多考慮用他了該方法是? ES6新增率碾,無論是ID 還是class都可以選所宰,但是和上面區(qū)別的是選ID時前面要加#號,選class時前面要加“.”:
區(qū)別于Elements婴谱,這里是個單數(shù)谭羔,所以只會獲取一個斟冕,要是想獲取多個相同的,就用querySelectorAll()吧景描!querySelectorAll()看這個ALL就知道它是用來選全部的:
最后這倆方法更實用超棺,可以選取CSS幾乎所有選擇器呵燕,而且querySelectorAll()得到的數(shù)組數(shù)據(jù)后還可以使用數(shù)組的方法。
操作DOM的樣式氧苍,有多種方式:
通過style屬性直接設(shè)置
通過className屬性設(shè)置類選擇器
也可以通過classList屬性添加多個類選擇器
操作DOM的內(nèi)容:
innerText屬性让虐,用于獲取 和 操作 DOM的文本內(nèi)容罢荡。
innerHTML屬性区赵,用于獲取 和 操作 DOM的HTML內(nèi)容:
創(chuàng)建和刪除:
createElement()方法笼才,用于創(chuàng)建DOM元素:
appendChild()方法骡送,用于在當(dāng)前DOM元素中添加子元素:
刪除元素有兩種寫法:
自刪 remove()方法各谚,是元素刪除自己:
通過父級刪除子級 removeChild()方法昌渤,是刪除元素里面指定的子元素: