事件

一仿村、 DOM0 事件和DOM2級(jí)在事件監(jiān)聽(tīng)使用方式上有什么區(qū)別码撰?
javascrippt中DOM0事件是直接寫(xiě)在html里的事件较性,比如
<input onclick=alert('1')/>
DOM2事件是通過(guò)addEventListener(IE低版本是通過(guò)attachEvent)綁定的 ,比如

var btn=document.querySelector('#btn');
btn.addEventListener('事件類(lèi)型',函數(shù)名)呵晚;

二者的區(qū)別主要是:
1瘩欺、DOM0在HTML中書(shū)寫(xiě)很方便必盖,但是存在兩個(gè)缺點(diǎn):
存在加載順序問(wèn)題,如果事件處理程序再html代碼之后加載俱饿,用戶(hù)可能在事件處理程序還未完成時(shí)就點(diǎn)擊按鈕之類(lèi)的觸發(fā)事件歌粥,存在時(shí)間差問(wèn)題。
這樣書(shū)寫(xiě)拍埠,html代碼和js代碼緊密耦合失驶,維護(hù)不方便。
二枣购、 attachEvent與addEventListener的區(qū)別嬉探?
attachEvent與addEventListener二者都是DOM2事件中的,通常會(huì)被t通同時(shí)應(yīng)用于兼容不同版本的瀏覽器棉圈。


attachEvent兼容性.png
addEventListener兼容性.png

二者的區(qū)別是:
1涩堤、addEventListener()接受三個(gè)參數(shù),第一個(gè)是要處理程序的事件類(lèi)型分瘾,這個(gè)事件類(lèi)型(事件名稱(chēng))是字符串胎围,但是不包括用于設(shè)置事件處理程序?qū)傩缘那熬Y"on",第二個(gè)參數(shù)是指定類(lèi)型的事件發(fā)生時(shí)應(yīng)該調(diào)用的函數(shù)德召。最后一個(gè)參數(shù)是布爾值白魂,通常情況下這個(gè)參數(shù)會(huì)傳遞false,事件發(fā)生在冒泡階段上岗,如果為true則事件發(fā)生再捕獲階段
2福荸、而attachEvent()在IE事件模型下不支持事件捕獲,所以只有兩個(gè)參數(shù):事件類(lèi)型和處理程序函數(shù)肴掷,且事件類(lèi)型使用的是帶"on"前綴的事件處理程序?qū)傩悦?br> 3敬锐、addEventListener()對(duì)于相同的事件只會(huì)注冊(cè)一次辞嗡,即使多次的寫(xiě)了注冊(cè)函數(shù)也只會(huì)成功注冊(cè)一個(gè),而attachEvent()允許將相同的事件處理函數(shù)注冊(cè)多次滞造。當(dāng)特定的事件類(lèi)型發(fā)生時(shí)续室,注冊(cè)函數(shù)的調(diào)用次數(shù)和注冊(cè)次數(shù)一樣。
4谒养、事件處理程序的作用域不相同挺狰,addEventListener的作用域是元素本身,this是指的觸發(fā)元素买窟,而attachEvent事件處理程序會(huì)在全局變量?jī)?nèi)運(yùn)行丰泊,this是window
5、為一個(gè)事件添加多個(gè)事件處理程序時(shí)始绍,執(zhí)行順序不同瞳购,addEventListener添加會(huì)按照添加順序執(zhí)行,而attachEvent添加多個(gè)事件處理程序時(shí)順序無(wú)規(guī)律(添加的方法少的時(shí)候大多是按添加順序的反順序執(zhí)行的亏推,但是添加的多了就無(wú)規(guī)律了)学赛。
三、解釋IE事件冒泡和DOM2事件傳播機(jī)制吞杭?
當(dāng)事件發(fā)生在某個(gè)文檔節(jié)點(diǎn)時(shí)盏浇,目標(biāo)的事件處理程序就會(huì)被觸發(fā),此外目標(biāo)的每個(gè)父節(jié)點(diǎn)也有機(jī)會(huì)處理該事件芽狗。
IE事件冒泡:事件開(kāi)始由最具體的元素接收绢掰,然后逐級(jí)向上傳播到不具體的元素。沒(méi)有捕獲階段童擎,只有目標(biāo)階段和事件冒泡階段滴劲。
DOM2事件傳播機(jī)制:DOM2事件規(guī)定事件流包括三個(gè)階段,事件捕獲階段顾复、處于目標(biāo)階段班挖、事件冒泡階段,首先發(fā)生的是事件捕獲捕透,為截取事件提供機(jī)會(huì)聪姿,然后是實(shí)際目標(biāo)接收事件,最后是冒泡階段乙嘀。

四末购、如何阻止事件冒泡? 如何阻止默認(rèn)事件虎谢?
非IE瀏覽器中提供了一個(gè)事件對(duì)象 stopPropagation,可以阻止冒泡盟榴,IE瀏覽器提供了cancelBubble事件對(duì)象可以阻止冒泡,
在IE瀏覽器中通過(guò)returnvalue=false;阻止默認(rèn)事件婴噩;非IE瀏覽器通過(guò)preventDefault()阻止默認(rèn)事件
五擎场、有如下代碼羽德,要求當(dāng)點(diǎn)擊每一個(gè)元素li時(shí)控制臺(tái)展示該元素的文本內(nèi)容。不考慮兼容

<ul class="ct">
    <li>這里是</li>
    <li>饑人谷</li>
    <li>前端6班</li>
</ul>
<script>
var ct=document.querySelector('.ct');
ct.addEventListener('click',function(e){
    if (e.target.tagName.toLowerCase()==='li') {
console.log(e.target.innerText);
    }
    
})
</script>
Paste_Image.png

六迅办、 補(bǔ)全代碼宅静,要求:

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

<ul class="ct">
    <li>這里是</li>
    <li>饑人谷</li>
    <li>任務(wù)班</li>
</ul>
<input class="ipt-add-content" placeholder="添加內(nèi)容"/>
<button id="btn-add-start">開(kāi)頭添加</button>
<button id="btn-add-end">結(jié)尾添加</button>
<script>
var ct=document.querySelector('.ct');
var iptAddContent=document.querySelector('.ipt-add-content');
var btnAddStar=document.querySelector('#btn-add-start');
var btnAddEnd=document.querySelector('#btn-add-end');
btnAddStar.addEventListener('click',function(){
    var li=document.createElement('li');
    if (iptAddContent.value) {
        li.innerText=iptAddContent.value;
    };
    ct.insertBefore(li,ct.firstChild);
})

 btnAddEnd.addEventListener('click',function(){
    var li=document.createElement('li');
    if (iptAddContent.value) {
        li.innerText=iptAddContent.value;
    };
    ct.appendChild(li);
})
 ct.addEventListener('click',function(e){
    if (e.target.tagName.toLowerCase()==='li') {
console.log(e.target.innerText);
    }})
</script>
Paste_Image.png

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

<ul class="ct">
    <li data-img="1.png">鼠標(biāo)放置查看圖片1</li>
    <li data-img="2.png">鼠標(biāo)放置查看圖片2</li>
    <li data-img="3.png">鼠標(biāo)放置查看圖片3</li>
</ul>
<div class="img-preview"></div>
<script>
var ct=document.querySelector('.ct');
var imgPreview=document.querySelector('.img-preview');
ct.addEventListener('mouseover',function(e){
    if (e.target.tagName.toLowerCase()==='li') {
        var dateImg=e.target.getAttribute('data-img');
        imgPreview.innerHTML='![](dateImg)';
    }
})

</script>
Paste_Image.png

八贾虽、 在 github 上創(chuàng)建個(gè)人項(xiàng)目逃糟,把視頻里事件兼容的函數(shù)寫(xiě)法放入項(xiàng)目,在 Readme.md里描述項(xiàng)目(選做題目)
由于網(wǎng)絡(luò)過(guò)于慢蓬豁,而且git上東西較多绰咽,長(zhǎng)時(shí)間未更新,一直下不下來(lái)庆尘,我就在這截圖吧


Paste_Image.png
Paste_Image.png
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剃诅,一起剝皮案震驚了整個(gè)濱河市巷送,隨后出現(xiàn)的幾起案子驶忌,更是在濱河造成了極大的恐慌,老刑警劉巖笑跛,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件付魔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡飞蹂,警方通過(guò)查閱死者的電腦和手機(jī)几苍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)陈哑,“玉大人妻坝,你說(shuō)我怎么就攤上這事【眩” “怎么了刽宪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)界酒。 經(jīng)常有香客問(wèn)我圣拄,道長(zhǎng),這世上最難降的妖魔是什么毁欣? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任庇谆,我火速辦了婚禮岳掐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饭耳。我一直安慰自己串述,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布寞肖。 她就那樣靜靜地躺著剖煌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逝淹。 梳的紋絲不亂的頭發(fā)上耕姊,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音栅葡,去河邊找鬼茉兰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛欣簇,可吹牛的內(nèi)容都是我干的规脸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼熊咽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼莫鸭!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起横殴,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤被因,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后衫仑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體梨与,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年文狱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粥鞋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瞄崇,死狀恐怖呻粹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苏研,我是刑警寧澤等浊,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站楣富,受9級(jí)特大地震影響凿掂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一庄萎、第九天 我趴在偏房一處隱蔽的房頂上張望踪少。 院中可真熱鬧,春花似錦糠涛、人聲如沸援奢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)集漾。三九已至,卻和暖如春砸脊,著一層夾襖步出監(jiān)牢的瞬間具篇,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工凌埂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驱显,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓瞳抓,卻偏偏與公主長(zhǎng)得像埃疫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子孩哑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

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

  • JavaScript 程序采用了異步事件驅(qū)動(dòng)編程模型栓霜。在這種程序設(shè)計(jì)風(fēng)格下,當(dāng)文檔横蜒、瀏覽器胳蛮、元素或與之相關(guān)的對(duì)象發(fā)...
    劼哥stone閱讀 1,252評(píng)論 3 11
  • 聲明:本文來(lái)源于http://www.webzsky.com/?p=731我只是在這里作為自己的學(xué)習(xí)筆記整理一下(...
    angryyan閱讀 6,968評(píng)論 1 6
  • 一鹰霍、問(wèn)答 1. dom對(duì)象的innerText和innerHTML有什么區(qū)別? innerHTML: 也就是從對(duì)象...
    饑人谷_羅偉恩閱讀 591評(píng)論 0 2
  • 如何批量操作 css 如何獲取 DOM 計(jì)算后的樣式 使用getComputedStyle獲取元素計(jì)算后的樣式 實(shí)...
    _Dot912閱讀 553評(píng)論 1 3
  • 事件 JavaScript和HTML的交互是通過(guò)事件實(shí)現(xiàn)的茵乱。JavaScript采用異步事件驅(qū)動(dòng)編程模型,當(dāng)文檔孟岛、...
    徐國(guó)軍_plus閱讀 571評(píng)論 0 2