Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击按钮时如何执行功能?_Javascript - Fatal编程技术网

Javascript 单击按钮时如何执行功能?

Javascript 单击按钮时如何执行功能?,javascript,Javascript,在JavaScript中单击按钮而不使用jQuery时,使函数执行的最佳实践是什么 我正在寻找一个如下所示的解决方案: var button = document.getElementById('myButton'); function sayHello() { alert('hello'); } button.attachFunctionToClick(sayHello); var button = document.getElementById("myButton"); but

在JavaScript中单击按钮而不使用jQuery时,使函数执行的最佳实践是什么

我正在寻找一个如下所示的解决方案:

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

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

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

附加事件的标准方式如下所示:

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

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

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

ie的旧版本(小于9)不支持addeventlistener,您必须返回attachEvent函数

button.attachEvent('click',sayHello);
当然,您仍然可以这样添加到元素的
onclick
方法中:

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

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

button.attachFunctionToClick(sayHello);
var button = document.getElementById("myButton");
button.addEventListener("click", sayHello, false);
button.onclick = sayHello
以上3个示例假设您没有向回调函数传递任何参数,这意味着它们将接收的唯一参数是事件对象。


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

if(document.addEventListener)
    button.addEventListener('click',sayHello,false);
else
    button.attachEvent('click',sayHello);
功能测试(){ 警报(“aaa”); }


这将在页面末尾的关闭正文标记之前执行:

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

功能测试(){
警报(“aaa”);
}
var button=document.getElementById('myButton');
button.onclick=测试;

对于浏览器遵从性,这里有一个简单的帮助函数:

function setEvent (element, event, handler) {
  if(document.addEventListener){
    element.addEventListener(event, handler);
   }else{
      element.attachEvent("on" + event, handler, false);
   }
};
重要:注意此处“+事件上的
”。它用于IE中的事件。请参阅更多

或者您可以尝试:

button.onclick = sayHello;
因为它本质上是DOM 0的一部分,所以这种方法非常广泛 支持并且不需要特殊的跨浏览器代码;因此是这样 通常用于动态注册事件侦听器,除非 需要addEventListener()的功能

-用于IE<9:

将指定的函数绑定到事件,以便该函数 每当事件在对象上激发时调用

:

addEventListener()在单个事件上注册单个事件侦听器 目标。事件目标可以是文档中的单个元素 文档本身、窗口或XMLHttpRequest

要为目标注册多个事件侦听器,请调用 addEventListener()用于相同的目标但具有不同的事件类型, 事件侦听器或捕获参数


AddEventListener
对于符合标准的浏览器,
attachEvent
对于IE+1,用于提及IE9-
attachEvent
。非常翔实的回答。