<input id="btn" type="button" value="按鈕" onclick="showMsg()">
缺點:高耦合,修改事件的時候須要同時修改js和HTML頁面javascript
//添加事件 var btn = document.getElementById('btn'); btn.onclick = function(){ alert('Hello World!'); } //刪除事件 btn.onclick = null;
表格中的數字表示支持該方法的第一個瀏覽器的版本號。html
方法 | |||||
---|---|---|---|---|---|
addEventListener() | 1.0 | 9.0 | 1.0 | 1.0 | 7.0 |
注意: Internet Explorer 8 及更早IE版本不支持 addEventListener() 方法,,Opera 7.0 及 Opera 更早版本也不支持。 可是,對於這些不支持該函數的瀏覽器,你能夠使用 attachEvent() 方法來添加事件句柄 (查看 "更多實例" 瞭解跨瀏覽器的解決方案)。java
語法瀏覽器
element.addEventListener(event, function, useCapture)dom
參數 | 描述 |
---|---|
event | 必須。字符串,指定事件名。 注意: 不要使用 "on" 前綴。 例如,使用 "click" ,而不是使用 "onclick"。 提示: 全部 HTML DOM 事件,能夠查看咱們完整的 HTML DOM Event 對象參考手冊。 |
function | 必須。指定要事件觸發時執行的函數。 當事件對象會做爲第一個參數傳入函數。 事件對象的類型取決於特定的事件。例如, "click" 事件屬於 MouseEvent(鼠標事件) 對象。 |
useCapture | 可選。布爾值,指定事件是否在捕獲或冒泡階段執行。 可能值:
|
var btn = document.getElementById('btn'); function DOM2test = function(){ alert('test1'); } function DOM2test2 = function(){ alert('test2'); } btn.addEventListener('click',DOM2test1,false); //能夠添加多個事件 btn.addEventListener('click',DOM2test2); //執行結果,按順序彈窗test一、test2 //刪除事件 btn.removeEventListner('click',DOM2test1,false);//須要指定刪除的具體方法
語法函數
element.attachEvent(event, function)測試
使用方法和DOM2級事件差很少,可是在傳入的參數中沒有第三個布爾值變量,由於在IE8版本以前是隻支持冒泡事件的,因此這裏默認爲冒泡事件。spa
另外一個區別是event這裏必須使用"on",好比點擊事件就是onclick。code
btn.attachEvent('onclick',showMsg()); //刪除事件 btn.detachEvent('onclick',showMsg());
var eventUtil = { //添加句柄 //支持DOM2級、IE、DOM0級 addHandler: function (element, type, handler) { if (element.addEventListener) { //DOM2級 element.addEventListenter(type, handler, false); } else if (element.attachEvent) { //IE element.attachEvent('on' + type, handler); } else { //DOM0級 element['on' + type] = handler; } }, //刪除句柄 removeHandler: function (element, type, handler) { if (element.romoveEventListener) { element.romoveEventListenter(type, handler, false); } else if (element.detachEvent) { element.detachEvent('on' + type, handler); } else { element['on' + type] = null; } } } //測試 eventuntil.addHandler(btn, 'click', showMsg()); //刪除 eventuntil.removeHandler(btn, 'click', showMsg());