js面試問(wèn)題

1.編寫一個(gè)通用的事件監(jiān)聽(tīng)函數(shù)
2.描述事件冒泡流程
3.對(duì)于一個(gè)無(wú)限下拉加載圖片的頁(yè)面,如何給每個(gè)圖片綁定事件
知識(shí)點(diǎn)

通用事件綁定
//標(biāo)準(zhǔn)方法
var btn=document.getElementById('btn1') btn.addEventListener('click',function(e){ console.log('clicked'); }) //封裝事件綁定 function myBindEvent(elem,type,fn){ elem.addEventListener(type,fn) } var a=document.getElementById('link1') myBindEvent(a,'click',function(e){ e.preventDefault() //阻止默認(rèn)行為 alert('link1 has clicked') })
IE低版本使用attachEvent綁定事件言沐,和W3C標(biāo)準(zhǔn)不一樣
事件冒泡
<div id="div1"> <p id="p1">激活</p> <p id="p2">取消</p> <p id="p3">取消</p> <p id="p4">取消</p> </div> <div id="div2"> <p id="p5">取消</p> <p id="p6">取消</p> </div> <script type="text/javascript"> function myBindEvent(elem,type,fn){ elem.addEventListener(type,fn) } var p1=document.getElementById('p1') var body=document.body myBindEvent(p1,'click',function(e){ e.stopPropagation() //阻止冒泡 alert('激活') }) myBindEvent(body,'click',function(e){ alert('取消') }) </script>
點(diǎn)擊p1赶诊,彈出激活,如果沒(méi)有e.stopPropagation()罩抗,事件將繼續(xù)向上冒泡找到body的alert('取消')
代理
<div id="div1"> <a href="#">a1</a> <a href="#">a2</a> <a href="#">a3</a> <a href="#">a4</a> </div>
<script type="text/javascript"> function myBindEvent(elem,type,fn){ elem.addEventListener(type,fn) } var div1=document.getElementById('div1') myBindEvent(div1,'click',function(e){ var target=e.target //獲取要綁定事件的元素 if(target.nodeName==='A'){ alert(target.innerHTML) } }) </script>
點(diǎn)擊每一個(gè)a標(biāo)簽彈出對(duì)應(yīng)的標(biāo)簽內(nèi)的內(nèi)容
解題

1.編寫一個(gè)通用的事件監(jiān)聽(tīng)函數(shù)

function myBindEvent(elem,type,selector,fn){
  if(fn==null){
    fn=selector
    selector=null
  }
  elem.addEventListener(type,function(e){
    var target
    if(selector){
      // 代理
      target=e.target
      if(target.matches(selector)){ //判斷目標(biāo)節(jié)點(diǎn)是否和選擇器匹配
        fn.call(target,e)
      }
    }else{
      // 不使用代理
      fn(e)
    }
  })
}

//使用代理
var div1=document.getElementById('div1')
myBindEvent(div1,'click','a',function(e){
  e.preventDefault()
  console.log(this.href);
})

//不使用代理
var btn1=document.getElementById('btn1')
myBindEvent(btn1,'click',function(e){
  console.log(btn1.innerHTML);
})

2.描述事件冒泡流程

DOM樹(shù)形結(jié)構(gòu)
事件冒泡
阻止冒泡
3.對(duì)于一個(gè)無(wú)限下拉加載圖片的頁(yè)面,如何給每個(gè)圖片綁定事件
使用代理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市如庭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撼港,老刑警劉巖坪它,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異帝牡,居然都是意外死亡往毡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門靶溜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)开瞭,“玉大人懒震,你說(shuō)我怎么就攤上這事∴拖辏” “怎么了个扰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)葱色。 經(jīng)常有香客問(wèn)我递宅,道長(zhǎng),這世上最難降的妖魔是什么苍狰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任办龄,我火速辦了婚禮,結(jié)果婚禮上淋昭,老公的妹妹穿的比我還像新娘俐填。我一直安慰自己,他們只是感情好翔忽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布英融。 她就那樣靜靜地躺著,像睡著了一般呀打。 火紅的嫁衣襯著肌膚如雪矢赁。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天贬丛,我揣著相機(jī)與錄音撩银,去河邊找鬼。 笑死豺憔,一個(gè)胖子當(dāng)著我的面吹牛额获,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播恭应,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抄邀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了昼榛?” 一聲冷哼從身側(cè)響起境肾,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胆屿,沒(méi)想到半個(gè)月后奥喻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡非迹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年环鲤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片憎兽。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冷离,死狀恐怖吵冒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情西剥,我是刑警寧澤痹栖,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站蔫耽,受9級(jí)特大地震影響结耀,放射性物質(zhì)發(fā)生泄漏留夜。R本人自食惡果不足惜匙铡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碍粥。 院中可真熱鬧鳖眼,春花似錦、人聲如沸嚼摩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)枕面。三九已至愿卒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間潮秘,已是汗流浹背琼开。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留枕荞,地道東北人柜候。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像躏精,于是被迫代替她去往敵國(guó)和親渣刷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

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

  • 什么是事件: 我們可以簡(jiǎn)單的把事件理解為瀏覽器的感知系統(tǒng)矗烛。比如說(shuō):他可以感覺(jué)到用戶是否點(diǎn)擊(click)了頁(yè)面辅柴、鼠...
    張松1366閱讀 6,794評(píng)論 1 6
  • 個(gè)人博客:https://yeaseonzhang.github.io 花了半個(gè)多月的時(shí)間,終于又把“JS紅寶書(shū)”...
    Yeaseon閱讀 1,751評(píng)論 2 23
  • 單例模式 適用場(chǎng)景:可能會(huì)在場(chǎng)景中使用到對(duì)象瞭吃,但只有一個(gè)實(shí)例碌嘀,加載時(shí)并不主動(dòng)創(chuàng)建,需要時(shí)才創(chuàng)建 最常見(jiàn)的單例模式虱而,...
    Obeing閱讀 2,069評(píng)論 1 10
  • Js中使用typeof能得到的類型typeof underfined //underfinedtypeo...
    Primers閱讀 102評(píng)論 0 0
  • 1.編寫一個(gè)通用的事件監(jiān)聽(tīng)函數(shù)2.描述事件冒泡流程3.對(duì)于一個(gè)無(wú)限下拉加載圖片的頁(yè)面筏餐,如何給每個(gè)圖片綁定事件 知識(shí)...
    Yangkeloff閱讀 629評(píng)論 0 5