javascript事件處理程序(事件偵聽器)

事件處理程序也叫事件偵聽器,什么是事件處理程序奕枢?那首先夭问,什么是事件信轿?事件就是用戶或者瀏覽器自身執(zhí)行的某種動(dòng)作晃痴,如:click、load等都是事件的名字财忽。而響應(yīng)時(shí)間的函數(shù)就叫做事件處理程序倘核,如:onclick,onload

添加事件處理程序的方法

為元素添加事件處理程序有多種方法:

一即彪、在元素上添加笤虫,如:

<input type="button" value="clickMe" onclick="alert(value)"/>  //這里用的是value而不是this.value,當(dāng)然用this.value也是可以的,this指的是目標(biāo)元素本身

這種方法的優(yōu)點(diǎn)在于他拓展作用域的方式,在函數(shù)內(nèi)部可以直接訪問document以及元素本身的屬性琼蚯。如下代碼酬凳,點(diǎn)擊按鈕會(huì)彈出輸入框中的值:

<form>
    <input type="text" name="userName"/>
    <input type="button" value="userName's value" onclick="alert(userName.value)"/> 
</form>

缺點(diǎn)在于:
1、會(huì)有時(shí)差問題遭庶,因?yàn)楹芏鄷r(shí)候偵聽器要處理的并不是簡單的一個(gè)語句宁仔,而是一個(gè)功能,如果點(diǎn)擊時(shí)頁面還沒有加載完成點(diǎn)擊時(shí)要執(zhí)行的函數(shù)峦睡,那么就會(huì)報(bào)錯(cuò)翎苫。這樣我們可以把他鄧莊到一個(gè)try-catch塊中來捕捉錯(cuò)誤,如:

    <input type="button" value="userName's value" onclick="try{sth();}catch(ex){}"/>

2榨了、可能會(huì)有兼容問題
3煎谍、html與javascript緊密耦合,不利于維護(hù)龙屉。

二呐粘、為元素指定事件處理程序:

<form>
    <input type="text" name="userName" id="userName"/>
    <input type="button" value="clickMe" id="button" /> 
</form>
var btn = document.getElementById("button");
var userName = document.getElementById("userName");

btn.onclick = function(){
    alert(userName.value);  //userName's value  這時(shí)要想獲取userName的value必須取得userName的引用
    alert(this.value);    //這里的this指的是當(dāng)前點(diǎn)擊的元素
}
btn.onclick = function(){   //如果為btn綁定多次click事件的話只識(shí)別最后一次
    alert(1);                       
}
//btn.onclick = null    //取消注釋之后將刪除btn的click事件,即點(diǎn)擊btn將不再有任何反應(yīng)

這種方法的優(yōu)點(diǎn)在于1转捕、綁定簡單2作岖、不會(huì)有瀏覽器兼容問題
缺點(diǎn)在于當(dāng)需要操作的元素很多時(shí),對(duì)DOM的操作太多五芝,函數(shù)太多會(huì)占用內(nèi)存痘儡,影響網(wǎng)站的性能

三、addEventListener():

addEvenetListener()接受三個(gè)參數(shù):1枢步、事件名沉删,如click注意不是onclick 2、執(zhí)行函數(shù) 3醉途、true or false(true表示在事件捕獲階段調(diào)用丑念,false表示在事件冒泡階段調(diào)用)。特別說明:不建議在事件捕獲階段調(diào)用结蟋,也就是不建議使用true,除非特別需要脯倚,因?yàn)闀?huì)有兼容問題

<input type="button" value="clickMe" id="button" /> 

var btn = document.getElementById("button");
btn.addEventListener('click',function(e){
    var target = e.target || e.srcElement;
    console.log(target);
},false);
btn.addEventListener('click',sth,false);     //用addEventListener()指定事件時(shí)可以指定多次
//btn.removeEventListener('click',sth,false);//removeEventListener()傳入相同的參數(shù)可以解除綁定,注意:匿名函數(shù)是無法解綁的
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嵌屎,一起剝皮案震驚了整個(gè)濱河市推正,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宝惰,老刑警劉巖植榕,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尼夺,居然都是意外死亡尊残,警方通過查閱死者的電腦和手機(jī)炒瘸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寝衫,“玉大人顷扩,你說我怎么就攤上這事∥恳悖” “怎么了隘截?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長汹胃。 經(jīng)常有香客問我婶芭,道長,這世上最難降的妖魔是什么着饥? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任犀农,我火速辦了婚禮,結(jié)果婚禮上宰掉,老公的妹妹穿的比我還像新娘呵哨。我一直安慰自己,他們只是感情好贵扰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布仇穗。 她就那樣靜靜地躺著流部,像睡著了一般戚绕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枝冀,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天舞丛,我揣著相機(jī)與錄音,去河邊找鬼果漾。 笑死球切,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绒障。 我是一名探鬼主播吨凑,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼户辱!你這毒婦竟也來了鸵钝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤庐镐,失蹤者是張志新(化名)和其女友劉穎恩商,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體必逆,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怠堪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年揽乱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粟矿。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凰棉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嚷炉,到底是詐尸還是另有隱情渊啰,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布申屹,位于F島的核電站绘证,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏哗讥。R本人自食惡果不足惜嚷那,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杆煞。 院中可真熱鬧魏宽,春花似錦、人聲如沸决乎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽构诚。三九已至蚌斩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間范嘱,已是汗流浹背送膳。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丑蛤,地道東北人叠聋。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像受裹,于是被迫代替她去往敵國和親碌补。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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

  • ??JavaScript 與 HTML 之間的交互是通過事件實(shí)現(xiàn)的。 ??事件砰盐,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,490評(píng)論 1 11
  • JavaScript 程序采用了異步事件驅(qū)動(dòng)編程模型闷袒。在這種程序設(shè)計(jì)風(fēng)格下,當(dāng)文檔岩梳、瀏覽器囊骤、元素或與之相關(guān)的對(duì)象發(fā)...
    劼哥stone閱讀 1,256評(píng)論 3 11
  • 第3章 基本概念 3.1 語法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,128評(píng)論 0 21
  • JavaScript 與 HTML 之間的交互是通過事件實(shí)現(xiàn)的晃择。事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特定的交互瞬...
    threetowns閱讀 342評(píng)論 0 0
  • 事件流 JavaScript與HTML之間的交互是通過事件實(shí)現(xiàn)的也物。事件宫屠,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特定的交互...
    DHFE閱讀 828評(píng)論 0 3