一、過去,給乙個物件繫結乙個事件,來處理函式的形式,如obj.onclick=fn1,我們稱之為事件繫結的第一種形式(賦值形式)。
這種形式的有一種缺點就是:同乙個物件的同乙個事件不能同時處理兩個不同的函式。
例如:
function fn1()function fn2()
document.onclick=fn1;
document.onclick=fn2;//
後面乙個事件會覆蓋前面乙個事件
二、為了解決上面出現的問題:即同乙個物件的同乙個事件能繫結不同的事件。這種方法我們稱之為事件繫結的第二種形式。(函式形式)
在ie下和標準瀏覽器下,需要做相容:
1、 ie(obj.attacheven('事件名',函式名)
例如:document.attachevent('onclick',fn1);等同於上面document.onclick=fn1;
1、沒有捕獲;
2、事件名稱有on;
3、函式執行的順序:在標準ie下,是正序的;非標準ie下,是倒敘的,從後往前執行。
4、函式裡面的this,指向的不是觸發事件的物件,而是window .
解決方法:call().
call()是函式內的一種的方法。呼叫函式:fn1()等同於fn1.call();
!!!特別重要的是,call()裡面的第乙個引數可以改變函式執行過程中內部this的指向。從第二個引數開始,就是原函式的引數
如果call方法的第乙個引數是null,那麼就不會改變this的指向。
function fn1(a,b)fn1.call(document,
10,20);
2、 標準(>ie9;ff;chrome等等):obj.addeventlistener('事件名',函式名,是否捕捉);;;是否捕捉:預設為false.事件名:沒有on
1、有捕獲;
2、事件名稱沒有on;
3、函式執行的順序為正序。
最後,封裝乙個函式,解決相容問題:
function bind(obj,evname,fn)else
) }
}bind(documen,click,fn1);
bind(documen,click,fn2)
事件繫結的第二種形式
無標題文件title 給乙個物件繫結乙個事件處理函式的第一種形式 fn function fn1 function fn2 fn1 fn2 會覆蓋前面繫結fn1 給乙個物件的同乙個事件繫結多個不同的函式 給乙個元素繫結事件函式的第二種形式 ie obj.attachevent 事件名稱,事件函式 1...
js事件繫結的第二種形式
html htmllang en head metacharset utf 8 title 事件繫結的第二種形式 title head script window.onload function else bind document,click fn1 bind document,click fn2...
Qt 第二種執行緒
流程 工程目錄 新增在這裡作為全域性 namespace ui class mywidget public qwidget endif mywidget h mythread.cpp include mythread.h include 待會用到sleep函式 include mythread my...