2013-04-11 51 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(), 事件侦听器或捕获的参数。

相关问题