2013-04-11 75 views
-2

什麼是在不使用jQuery的情況下在JavaScript中單擊按鈕時執行函數的最佳實踐?單擊按鈕時如何執行某個功能?

我要找的,看起來像這樣的解決方案:

var button = document.getElementById('myButton'); 

function sayHello() { 
    alert('hello'); 
} 

button.attachFunctionToClick(sayHello); 
+1

https://developer.mozilla.org/en-US/docs/DOM/element.onclick – sachleen 2013-04-11 00:29:22

+1

https://developer.mozilla.org/en-US/docs/DOM_Client_Object_Cross-Reference/DOM_Events – SLaks 2013-04-11 00:29:29

+1

'符合標準的瀏覽器的AddEventListener',IE <= 8的'attachEvent'。 – 2013-04-11 00:29:35

回答

1

連接事件的標準方法是這樣的:

var button = document.getElementById("myButton"); 
button.addEventListener("click", sayHello, false); 

Read more

舊版本的IE(少於9)不支持addeventlistener,但你必須回落到attachEvent函數。

button.attachEvent('click',sayHello); 

當然仍可以只添加到元件的onclick方法是這樣的:

button.onclick = sayHello 

上述3個例子假設你不傳遞任何參數到回調函數,這意味着他們將收到的唯一參數將是事件對象。

+0

提及IE9-'attachEvent'。非常翔實的答案。 – Nope 2013-04-11 00:36:24

0
var button = document.getElementById('myButton'); 
function sayHello() { 
    alert('hello'); 
} 

if(document.addEventListener) 
    button.addEventListener('click',sayHello,false); 
else 
    button.attachEvent('click',sayHello); 
0
<script> 
    function test() { 
     alert('aaa'); 
    } 
</script> 

<input type="button" onclick="test()" /> 

<input type="button" id="myButton" /> 

這又在頁面的結尾結束標記之前:

<script> 
    function test() { 
     alert('aaa'); 
    } 
    var button = document.getElementById('myButton'); 
    button.onclick = test; 
</script> 
0

對於瀏覽器合規,這裏有一個簡單的輔助功能:

function setEvent (element, event, handler) { 
    if(document.addEventListener){ 
    element.addEventListener(event, handler); 
    }else{ 
     element.attachEvent("on" + event, handler, false); 
    } 
}; 

重要事項:請注意"on" + event這裏。它用於IE中的事件。查看更多here

EXAMPLE

或者,你可以嘗試:

button.onclick = sayHello; 

因爲它是DOM 0的基本組成部分,這種方法是非常廣泛的支持 ,不需要特殊的跨瀏覽器的代碼;因此它通常用於動態註冊事件偵聽器,除非需要addEventListener()的額外 功能。

EXAMPLE

attachEvent - 用於IE < 9:

將指定函數綁定到一個事件,從而使功能得到 稱爲每當對象上的事件觸發。

addEventListener

的addEventListener()在單個 目標寄存器的單個事件偵聽器。事件目標可以是文檔中的單個元素,文檔本身,窗口或XMLHttpRequest。

要針對相同目標,但具有不同的事件類型爲目標註冊多個事件偵聽器,調用 的addEventListener(), 事件偵聽器或捕獲的參數。

相關問題