事件

題目1: DOM0 事件和DOM2級(jí)在事件監(jiān)聽使用方式上有什么區(qū)別?

DOM0級(jí)處理程序,事件名以on開頭坛怪,比如click事件處理程序就是onclick,load事件就是onload镇防。
通過(guò)js來(lái)添加DOM0事件處理程序時(shí),首先要獲得一個(gè)要操作對(duì)象的引用瞒津,然后通過(guò)其事件處理程序?qū)傩?這些屬性通常全部小寫)蝉衣,指定事件處理程序。

var btn = document.getElementById("myBtn");
btn.onclick = function(){
    alert('call o'clock event');
}

DOM0級(jí)事件處理程序可以認(rèn)為是元素的方法巷蚪。刪除DOM0級(jí)事件處理程序病毡,將相應(yīng)屬性設(shè)置null即可。

btn.onclick = null;

DOM2中定義了兩個(gè)方法addEventListener()removeEventListener()钓辆,分別用于添加事件處理程序和刪除處理程序剪验。

二者區(qū)別:

使用DOM2級(jí)方法添加事件處理程序的主要好處是可以添加多個(gè)事件處理程序肴焊,而DOM0級(jí)為一個(gè)事件添加多個(gè)事件處理程序時(shí),后面的程序會(huì)覆蓋前面的功戚。

題目2: attachEvent與addEventListener的區(qū)別娶眷?

在早起的IE瀏覽器中沒(méi)有實(shí)現(xiàn)addEventListener()和removeEventListener(),但提供了兩個(gè)替代方法attachEvent()和detachEvent()啸臀。
attachEvent與addEventListener的區(qū)別:

  • 參數(shù)個(gè)數(shù)不相同届宠。addEventListener有三個(gè)參數(shù),attachEvent有兩個(gè)參數(shù)乘粒,attachEvent添加的事件處理程序只能發(fā)生在冒泡階段豌注,addEventListener第三個(gè)參數(shù)可以決定添加的事件處理程序是在捕獲階段還是在冒泡階段處理
  • 第一個(gè)參數(shù)意義不同,addEventListener第一個(gè)參數(shù)是事件類型(比如click, load),而attachEvent第一個(gè)參數(shù)指明的是事件處理函數(shù)的名稱(onclick, onload)
  • 事件處理程序的作用域不同灯萍,addEventListener的作用域是元素本身轧铁,this指的是觸發(fā)元素,attachEvent事件處理程序會(huì)在全局變量?jī)?nèi)運(yùn)行旦棉,this是window齿风。
  • 為一個(gè)事件添加多個(gè)事件處理程序時(shí),執(zhí)行順序不同绑洛,addEventListener添加會(huì)按照添加順序執(zhí)行救斑,而attachEvent添加多個(gè)事件處理程序時(shí)順序無(wú)規(guī)律。

題目3: 解釋IE事件冒泡和DOM2事件傳播機(jī)制真屯?

事件冒泡:子元素嵌套在父元素內(nèi)部脸候,點(diǎn)擊子元素的時(shí)候一定同時(shí)表示點(diǎn)擊了父元素,這個(gè)時(shí)候绑蔫,先觸發(fā)子元素的事件處理器运沦,然后再觸發(fā)父元素的事件處理器,如果父元素的父元素還有處理器晾匠,就一直向上觸發(fā)茶袒,一直到 body 元素。就像魚吐泡泡一樣凉馆,從水下向水面走薪寓,每向上走一層就會(huì)查看這一層有沒(méi)有事件處理器,如果有的話就會(huì)觸發(fā)澜共,如果沒(méi)有的話就繼續(xù)向上尋找向叉,直到頂層的 body,才結(jié)束尋找事件嗦董。


事件冒泡

DOM2級(jí)事件流母谎,總共分為三個(gè)階段:事件捕獲, 目標(biāo)元素京革,事件冒泡奇唤。DOM 2級(jí)規(guī)范將事件捕獲和事件冒泡都收入自己的囊中幸斥,所以你可以在一個(gè)元素上同時(shí)注冊(cè)事件捕獲和事件冒泡,也就是說(shuō)你可以選擇父級(jí)元素事件處理器后觸發(fā)咬扇,也可以選擇先觸發(fā)甲葬,甚至可以選擇先觸發(fā)父級(jí)元素的捕獲事件,再觸發(fā)父級(jí)元素的冒泡事件懈贺【眩可以通過(guò)設(shè)置addEventListener第三個(gè)參數(shù)來(lái)控制。


DOM2事件流

題目4:如何阻止事件冒泡梭灿? 如何阻止默認(rèn)事件画侣?

document.querySelector('a').onclick= function(e){
    e.preventDefault() //阻止默認(rèn)事件
    e.stopPropagation() //阻止事件進(jìn)一步捕獲或冒泡
    console.log(this.href)
  }

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

<ul class="ct">
    <li>這里是</li>
    <li>饑人谷</li>
    <li>前端6班</li>
</ul>
<script>
      var lists = document.querySelectorAll('.ct>li');
      lists.forEach(function(list){
        list.addEventListener('click', function(){
          console.log(this.innerText);
        });
      });
</script>

題目6: 補(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)容宪卿。
<ul class="ct">
    <li>這里是</li>
    <li>饑人谷</li>
    <li>任務(wù)班</li>
</ul>
<input class="ipt-add-content" placeholder="添加內(nèi)容"/>
<button id="btn-add-start">開頭添加</button>
<button id="btn-add-end">結(jié)尾添加</button>
<script>
      var lists = document.querySelector('.ct');
      var input = document.querySelector('.ipt-add-content');

      document.getElementById('btn-add-start').addEventListener('click', function() {
        var addLi = document.createElement('li');
        addLi.innerText = input.value;
        if (input.value != '') {
          lists.insertBefore(addLi, lists.firstChild);
        }
      })

      document.getElementById('btn-add-end').addEventListener('click', function() {
        var addLi = document.createElement('li');
        addLi.innerText = input.value;
        if (input.value != '') {
        lists.appendChild(addLi);
       }
      })

      lists.addEventListener('click', function(e) {
        if(e.target.tagName.toLowerCase() === 'li') {
          console.log(e.target.innerText);
        }
      });
</script>

7. 補(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 lists = document.querySelectorAll('.ct>li');
      var imgDisplay = document.querySelector('.img-preview');
      lists.forEach(function(list){
        list.addEventListener('mouseenter', function(){
          var url = this.getAttribute('data-img');
          var img = document.createElement('img');
          img.setAttribute('src', url);
          imgDisplay.appendChild(img);
        })
      })
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末西疤,一起剝皮案震驚了整個(gè)濱河市烦粒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌代赁,老刑警劉巖扰她,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異芭碍,居然都是意外死亡徒役,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門窖壕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)忧勿,“玉大人,你說(shuō)我怎么就攤上這事瞻讽≡” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵速勇,是天一觀的道長(zhǎng)晌砾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)烦磁,這世上最難降的妖魔是什么养匈? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任哼勇,我火速辦了婚禮,結(jié)果婚禮上呕乎,老公的妹妹穿的比我還像新娘积担。我一直安慰自己,他們只是感情好楣嘁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布磅轻。 她就那樣靜靜地躺著,像睡著了一般逐虚。 火紅的嫁衣襯著肌膚如雪聋溜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天叭爱,我揣著相機(jī)與錄音撮躁,去河邊找鬼。 笑死买雾,一個(gè)胖子當(dāng)著我的面吹牛把曼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播漓穿,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嗤军,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了晃危?” 一聲冷哼從身側(cè)響起叙赚,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎僚饭,沒(méi)想到半個(gè)月后震叮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鳍鸵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年苇瓣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偿乖。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡击罪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出汹想,到底是詐尸還是另有隱情外邓,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布古掏,位于F島的核電站损话,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丧枪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一光涂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拧烦,春花似錦忘闻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至债沮,卻和暖如春炼吴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疫衩。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工硅蹦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人闷煤。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓童芹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鲤拿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子假褪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

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

  • 聲明:本文來(lái)源于http://www.webzsky.com/?p=731我只是在這里作為自己的學(xué)習(xí)筆記整理一下(...
    angryyan閱讀 7,011評(píng)論 1 6
  • 一嗜价、問(wèn)答 1. dom對(duì)象的innerText和innerHTML有什么區(qū)別? innerHTML: 也就是從對(duì)象...
    饑人谷_羅偉恩閱讀 597評(píng)論 0 2
  • 如何批量操作 css 如何獲取 DOM 計(jì)算后的樣式 使用getComputedStyle獲取元素計(jì)算后的樣式 實(shí)...
    _Dot912閱讀 558評(píng)論 1 3
  • JavaScript 程序采用了異步事件驅(qū)動(dòng)編程模型幕庐。在這種程序設(shè)計(jì)風(fēng)格下,當(dāng)文檔家淤、瀏覽器异剥、元素或與之相關(guān)的對(duì)象發(fā)...
    劼哥stone閱讀 1,256評(píng)論 3 11
  • 1:DOM0事件和DOM2級(jí)在事件監(jiān)聽使用方式上有什么區(qū)別? 瀏覽器端的JavaScript采用的是事件驅(qū)動(dòng)的異步...
    饑人谷_bigJiao閱讀 280評(píng)論 0 0