DOM操作&事件操作

1.寫一個(gè)函數(shù)糜烹,批量操作 css

function css(node, styleObj){
    for(var key in styleObj){
        node.style[key] = styleObj[key]
    }
}
css(document.body, {
    'color': 'red',
    'background-color': '#ccc'
})

2.如何獲取 DOM 計(jì)算后的樣式

window.getComputedStyle()
行內(nèi)樣式(inline style)具有最高的優(yōu)先級(jí)缸剪,改變行內(nèi)樣式,通常會(huì)立即反映出來。但是,網(wǎng)頁元素最終的樣式是綜合各種規(guī)則計(jì)算出來的舆逃。因此,如果想得到元素現(xiàn)有的樣式戳粒,只讀取行內(nèi)樣式是不夠的路狮,我們需要得到瀏覽器最終計(jì)算出來的那個(gè)樣式規(guī)則。

window.getComputedStyle方法蔚约,就用來返回這個(gè)規(guī)則奄妨。它接受一個(gè)DOM節(jié)點(diǎn)對(duì)象作為參數(shù),返回一個(gè)包含該節(jié)點(diǎn)最終樣式信息的對(duì)象苹祟。所謂“最終樣式信息”展蒂,指的是各種CSS規(guī)則疊加后的結(jié)果。

var div = document.querySelector('div');
window.getComputedStyle(div).backgroundColor

getComputedStyle方法還可以接受第二個(gè)參數(shù)苔咪,表示指定節(jié)點(diǎn)的偽元素(比如:before锰悼、:after、:first-line团赏、:first-letter等)箕般。

var result = window.getComputedStyle(div, ':before');

注意點(diǎn)

  • 返回的CSS值都是絕對(duì)單位,比如舔清,長度都是像素單位(返回值包括px后綴)丝里,顏色是rgb(#, #, #)或rgba(#, #, #, #)格式。
  • CSS規(guī)則的簡寫形式無效体谒,比如杯聚,想讀取margin屬性的值,不能直接讀抒痒,只能讀marginLeft幌绍、marginTop等屬性。
  • 如果一個(gè)元素不是絕對(duì)定位,top和left屬性總是返回auto傀广。
  • 該方法返回的樣式對(duì)象的cssText屬性無效颁独,返回undefined。
  • 該方法返回的樣式對(duì)象是只讀的伪冰,如果想設(shè)置樣式誓酒,應(yīng)該使用元素節(jié)點(diǎn)的style屬性。

3.實(shí)現(xiàn)效果

(http://js.jirengu.com/zexos/1/)

4.onlick與addEventListener的區(qū)別贮聂?

onlick
  • 每個(gè)元素都有自己的事件處理程序?qū)傩钥扛蹋@些屬性名稱通常為小寫,如onclick等吓懈,將這些屬性的值設(shè)置為一個(gè)函數(shù)歼冰,就可以指定事件處理程序
  • 使用這個(gè)方法指定的監(jiān)聽函數(shù),只會(huì)在冒泡階段觸發(fā)
  • 同一個(gè)事件只能定義一個(gè)監(jiān)聽函數(shù)骄瓣,也就是說,如果定義兩次onclick屬性耍攘,后一次定義會(huì)覆蓋前一次
  • 所有瀏覽器都兼容
addEventListener
  • addEventListener接受三個(gè)參數(shù):事件類型、事件處理方法、布爾參數(shù)(如果是true表示在捕獲階段調(diào)用事件處理程序夯尽,如果是false袱箱,則是在事件冒泡階段處理)
  • 可以針對(duì)同一個(gè)事件,添加多個(gè)監(jiān)聽函數(shù)式曲。
  • 能夠指定在哪個(gè)階段(捕獲階段還是冒泡階段)觸發(fā)回監(jiān)聽函數(shù)妨托。
  • 除了DOM節(jié)點(diǎn),還可以部署在window吝羞、XMLHttpRequest等對(duì)象上面兰伤,等于統(tǒng)一了整個(gè)JavaScript的監(jiān)聽函數(shù)接口。

5.解釋DOM2事件傳播機(jī)制钧排?

當(dāng)一個(gè)事件發(fā)生以后敦腔,它會(huì)在不同的DOM節(jié)點(diǎn)之間傳播(propagation)。這種傳播分成三個(gè)階段:
第一階段:從window對(duì)象傳導(dǎo)到目標(biāo)節(jié)點(diǎn)恨溜,稱為“捕獲階段”(capture phase)符衔。
第二階段:在目標(biāo)節(jié)點(diǎn)上觸發(fā),稱為“目標(biāo)階段”(target phase)糟袁。
第三階段:從目標(biāo)節(jié)點(diǎn)傳導(dǎo)回window對(duì)象判族,稱為“冒泡階段”(bubbling phase)。

6.有如下代碼项戴,要求當(dāng)點(diǎn)擊每一個(gè)元素li時(shí)控制臺(tái)展示該元素的文本內(nèi)容形帮。不考慮兼容

<ul class="ct">
    <li>這里是</li>
    <li>饑人谷</li>
    <li>前端14班</li>
</ul>
<script>
var liArr = document.getElementsByClassName("ct")[0].getElementsByTagName("li");
for(var i = 0; i < liArr.length; i++){
    liArr[i].addEventListener("click",function(){
        console.log(this.innerText);
    })
}
</script>

7.補(bǔ)全代碼,要求:

  • 當(dāng)點(diǎn)擊按鈕開頭添加時(shí)在<li>這里是</li>元素前添加一個(gè)新元素,內(nèi)容為用戶輸入的非空字符串沃缘;
  • 當(dāng)點(diǎn)擊結(jié)尾添加時(shí)在最后一個(gè) li 元素后添加用戶輸入的非空字符串.
    當(dāng)點(diǎn)擊每一個(gè)元素li時(shí)控制臺(tái)展示該元素的文本內(nèi)容躯枢。
    參考鏈接

8.補(bǔ)全代碼,要求:當(dāng)鼠標(biāo)放置在li元素上槐臀,會(huì)在img-preview里展示當(dāng)前l(fā)i元素的data-img對(duì)應(yīng)的圖片锄蹂。

參考鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市水慨,隨后出現(xiàn)的幾起案子得糜,更是在濱河造成了極大的恐慌,老刑警劉巖晰洒,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朝抖,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡谍珊,警方通過查閱死者的電腦和手機(jī)治宣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來砌滞,“玉大人侮邀,你說我怎么就攤上這事”慈螅” “怎么了绊茧?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長打掘。 經(jīng)常有香客問我华畏,道長,這世上最難降的妖魔是什么尊蚁? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任亡笑,我火速辦了婚禮,結(jié)果婚禮上横朋,老公的妹妹穿的比我還像新娘况芒。我一直安慰自己,他們只是感情好叶撒,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布绝骚。 她就那樣靜靜地躺著,像睡著了一般祠够。 火紅的嫁衣襯著肌膚如雪压汪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天古瓤,我揣著相機(jī)與錄音止剖,去河邊找鬼腺阳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛穿香,可吹牛的內(nèi)容都是我干的亭引。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼皮获,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼焙蚓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起洒宝,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤购公,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后雁歌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宏浩,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年靠瞎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了比庄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乏盐,死狀恐怖佳窑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丑勤,我是刑警寧澤华嘹,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布吧趣,位于F島的核電站法竞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏强挫。R本人自食惡果不足惜岔霸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望俯渤。 院中可真熱鬧呆细,春花似錦、人聲如沸八匠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽梨树。三九已至坑夯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抡四,已是汗流浹背柜蜈。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國打工仗谆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人淑履。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓隶垮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親秘噪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狸吞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    程序員poetry閱讀 114,417評(píng)論 24 450
  • 導(dǎo)讀:本文是teren對(duì)DOM事件知識(shí)點(diǎn)所做的進(jìn)一步整理,整理資料主要參考DOM事件簡介和饑人谷課件缆娃,如果對(duì)DOM...
    犯迷糊的小羊閱讀 4,027評(píng)論 1 5
  • DOM DOM內(nèi)容主要分為四部分: 什么是DOM和節(jié)點(diǎn)捷绒; 獲取節(jié)點(diǎn); 節(jié)點(diǎn)操作(3種)贯要; 屬性操作(3種)暖侨。 什么...
    magic_pill閱讀 780評(píng)論 0 1
  • <a name='html'>HTML</a> Doctype作用?標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別? (1)崇渗、<...
    clark124閱讀 3,497評(píng)論 1 19
  • 六月的第一個(gè)午后字逗,天氣異常悶熱,我?guī)е鴮殞氃诳蛷d席地而坐宅广,一邊給寶寶扇風(fēng)葫掉,一邊汗流浹背。我心情煩燥跟狱。阿蘇倒是心安理...
    譯丞小姐閱讀 1,351評(píng)論 7 32