什么是在不使用jQuery的情况下在JavaScript中单击按钮时执行函数的最佳实践?单击按钮时如何执行某个功能?
我要找的,看起来像这样的解决方案:
var button = document.getElementById('myButton');
function sayHello() {
alert('hello');
}
button.attachFunctionToClick(sayHello);
什么是在不使用jQuery的情况下在JavaScript中单击按钮时执行函数的最佳实践?单击按钮时如何执行某个功能?
我要找的,看起来像这样的解决方案:
var button = document.getElementById('myButton');
function sayHello() {
alert('hello');
}
button.attachFunctionToClick(sayHello);
连接事件的标准方法是这样的:
var button = document.getElementById("myButton");
button.addEventListener("click", sayHello, false);
旧版本的IE(少于9)不支持addeventlistener,但你必须回落到attachEvent函数。
button.attachEvent('click',sayHello);
当然仍可以只添加到元件的onclick
方法是这样的:
button.onclick = sayHello
上述3个例子假设你不传递任何参数到回调函数,这意味着他们将收到的唯一参数将是事件对象。
提及IE9-'attachEvent'。非常翔实的答案。 – Nope 2013-04-11 00:36:24
var button = document.getElementById('myButton');
function sayHello() {
alert('hello');
}
if(document.addEventListener)
button.addEventListener('click',sayHello,false);
else
button.attachEvent('click',sayHello);
<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>
对于浏览器合规,这里有一个简单的辅助功能:
function setEvent (element, event, handler) {
if(document.addEventListener){
element.addEventListener(event, handler);
}else{
element.attachEvent("on" + event, handler, false);
}
};
重要事项:请注意"on" + event
这里。它用于IE中的事件。查看更多here。
或者,你可以尝试:
button.onclick = sayHello;
因为它是DOM 0的基本组成部分,这种方法是非常广泛的支持 ,不需要特殊的跨浏览器的代码;因此它通常用于动态注册事件侦听器,除非需要addEventListener()的额外 功能。
attachEvent - 用于IE < 9:
将指定函数绑定到一个事件,从而使功能得到 称为每当对象上的事件触发。
的addEventListener()在单个 目标寄存器的单个事件侦听器。事件目标可以是文档中的单个元素,文档本身,窗口或XMLHttpRequest。
要针对相同目标,但具有不同的事件类型为目标注册多个事件侦听器,调用 的addEventListener(), 事件侦听器或捕获的参数。
https://developer.mozilla.org/en-US/docs/DOM/element.onclick – sachleen 2013-04-11 00:29:22
https://developer.mozilla.org/en-US/docs/DOM_Client_Object_Cross-Reference/DOM_Events – SLaks 2013-04-11 00:29:29
'符合标准的浏览器的AddEventListener',IE <= 8的'attachEvent'。 – 2013-04-11 00:29:35