1. 程式人生 > >原生JS的事件繫結

原生JS的事件繫結

原生js的事件繫結有兩種方法:

1.通過HTML屬性處理函式的繫結

example:

1)<button id='oBtn' onclick="alert('hahaha')">click</button>


2)<button onclick="la()">click</button>

<script>
function la(){alert('xixi');}
</script>

這種方法適合編寫簡短的小事件,不會涉及到太大的效能問題。

2通過JavaScript物件屬性來繫結

var btn = document.getElementById('oBtn');

btn.onclick = function(){

alert('xixi');}

但是這種方法的缺陷就是隻能對一個元素的一個事件進行繫結,會出現覆蓋的效果,只會執行最後面定義的。

3利用所有文件元素的方法

這種方法有相容性問題

(1)addEventListener(type,handler,boolean),相容IE8以後的所有瀏覽器

(2)attachEvent(type,handler),適用IE8以下的版本

用法:oDiv1.addEventListener('click',function(){
alert('div11');
},false);

事件的執行順序與事件的註冊順序是一致的,

false:發生在冒泡階段 , true則發生在捕獲階段

    oDiv1.attachEvent('onclick',function(){
alert('haha');
});

登出的方法分別是removeEvent()  and detach()

可以自己封裝一個函式來做相容:

//add~event

funciton addEvent(elem,type,fn){

if(elem.addEventListener)//judge 

{

    elem.addEventListener(type,fn,false);//預設是冒泡

 }

else if(elem.attachEvent){

    elem[type+fn] = function(){

    fn.call(elem);

    };

   elem.attachEvent('on'+type,elem[type+fn]);

}

else{

elem['on'+type] = fn;

}

//remove~ event

function removeEvent(elem,type,fn){
if(elem.removeEventListener){
elem.removeEventListener(type,fn,false);
}else if{
elem.detachEvent('on'+type,elem[type+fn]);
}else{
elem['on'+type] = fn;
}
}

//call function

addEvent(oBtn,'click',function(){
alert(this.innerHTML);
});

removeEvent(oBtn,'click',,function(){
alert(this.innerHTML);
});

相關推薦

原生js事件事件委託

最近常在移動端開發,由於不是大型站點,不需要使用vue等庫,也不需要引用jquery和zepto等。 寫得最多得就是各種元素選擇器和事件繫結,操作下來也是有點煩人。這時候懷念起jquery的美好來了,但是僅為了這個引用這麼大個庫,實在時下不了手,思考了一下,直

原生js事件事件移除

/** * @description 事件繫結,相容各瀏覽器 * @param target 事件觸發物件 * @param type 事件 * @param func 事件處理函式 */ function addEvents(target, type

原生JS事件onclick和addEventListener

onclick繫結方式 優點: - 簡潔 - 處理事件的this關鍵字指向當前元素 缺點: - 不能對事件捕獲或事件冒泡進行控制,只能使用事件冒泡,無法切換成事件捕獲 - 一次只能對一個元素繫結一個事件處理

js事件

DOM3級事件中定義了9個滑鼠事件。 mousedown:滑鼠按鈕被按下(左鍵或者右鍵)時觸發。不能通過鍵盤觸發。 mouseup:滑鼠按鈕被釋放彈起時觸發。不能通過鍵盤觸發。 click:單擊滑鼠左鍵或者按下回車鍵時觸發。這點對確保易訪問性很重要,意味著onclick事

JS事件事件監聽,事件委託

        在JavaScript的學習中,我們經常會遇到JavaScript的事件機制,例如,事件繫結、事件監聽、事件委託(事件代理)等。這些名詞是什麼意思呢,有什麼作用呢? 事件繫結 要想讓 JavaScript 對使用者的操作

js 事件

給一個物件繫結一個事件處理函式的第一種形式 obj.onclick = fn; <!DOCTYPE html> <html>     <head>         &

Js事件時,函式名加括號和不加括號有什麼區別

一,在js程式碼裡     加括號代表呼叫,執行這個方法;     不加括號目的是引用,代表把這個函式賦值給某個變數。       在下面程式碼裡:   1.1   btn.onclick=aa;是正

js事件的幾種方式與on()、bind()的區別

一直不是很理解幾種js事件繫結之間的區別與聯絡,今天百度了一下,在此做一總結: 1.如果只是簡單的繫結一個事件,可以直接寫在行內,點選執行一個函式,例如 <button onclick="alert('點我啊!')">點我啊</button> 2.也

js事件的幾種方式

原文地址:https://www.cnblogs.com/javawebstudy/p/5266168.html 要想讓 JavaScript 對使用者的操作作出響應,首先要對 DOM 元素繫結事件處理函式。所謂事件處理函式,就是處理使用者操作的函式,不同的操作對應不同的名

js事件事件流,事件代理的一些理解

一、事件繫結: 事件繫結的三種方法: 1、在DOM中直接繫結: //<ul id="parent-list" onclick="printName(this)"> //this指當前發生時

js事件事件監聽、事件委託

一、JavaScript事件:事件是文件或瀏覽器中發生的特定互動瞬間! 事件流: 1、事件冒泡:事件冒泡即事件最開始由最具體的元素(文件中巢狀層次最深的那個節點)接收,然後逐級向上傳播至最不具體的節點(文件)。 text–>div–&

原生js事件批量-事件委託

我們常常會遇到一個需求,就是給表格裡面的每個特定的td繫結一個事件. 遇到這種需求,很多人基本都會想到如下程式碼: var td = document.getElementsByTagName("td"); for( let i =0; i<

原生JS事件

原生js的事件繫結有兩種方法: 1.通過HTML屬性處理函式的繫結 example: 1)<button id='oBtn' onclick="alert('hahaha')">click

js/jQuery將來生成的事件

HTML <button class="num1">點選生成按鈕</button> <div class="newbtn" id="newparent" style="width: 400px;height: 80px;border: 1px solid r

js 回車鍵事件

<label class="col-sm-1 control-label">快速搜尋<span style="color:red;"> </span> </label>

JS事件事件流模型

一、JS事件 (一)JS事件分類 1.滑鼠事件: click/dbclick/mouseover/mouseout 2.HTML事件: onload/onunload/onsubmit/onresize/onchange/onfoucs/onscroll 3.鍵盤事件

深入理解JS事件事件流模型

https://www.jb51.net/article/139997.htm 一、JS事件 (一)JS事件分類 1.滑鼠事件: click/dbclick/mouseover/mouseout 2.HTML事件:  onload/onunload/onsubmit/onresize/o

關於js事件失效問題

相信很多開始學習前端開發的朋友都發生過繫結事件失效的問題,那麼究竟是什麼原因使得事件失效呢? 這裡作者以jquery庫編寫作為例子。 第一種:直接失效。 <html> <head> <script type="text/javascript" src="/j

vue.js v-on事件使用,vue.js event事件

vue.js v-on事件使用,vue.js event事件繫結   ================================ ©Copyright 蕃薯耀 2018年12月04日 http://fanshuyao.iteye.com/   <!DOCT

js事件高階應用01(事件 、高階拖拽)

事件繫結         IE方式               attachEvent(事件名稱、函式),繫結事件處理函式               detachEvent(事件名稱、函式),解除繫結        DOM方式                add