注册事件的第一种方式,直接在标签中使用事件句柄:
<script> //对于当前程序来说,sayHello函数被称为回调函数(callback函数) //回调函数的特点,自己的函数,自己不调用,由其他程序负责调用 function sayHello(){ alert("你好,Js") } </script> //以下代码的含义是,将sayHello函数注册到按钮上,等待click事件发生,该函数被浏览器调用,我们称之为回调函数 <input type = "button" value = "hello" onclick = "sayHello()"/>注册事件的第二种方式,是使用纯JS代码完成事件的注册
<input type = "button" value = "hello2" id = "mybtn"> <script type = "text/javascript"> function dosome(){ alert("do some!"); } var btnObj = document.getElementById("mybtn"); btnObj.onclick = dosmoe; </script>第一步:先获取这个按钮的对象(document是全部小写,内置对象,可以直接使用,document就代表整个HTML页面)
var btnObj = document.getElementById("mybtn");第二步:给按钮对象的onclick属性赋值(按钮都有onxxx属性)
//将回调函数dosome注册到click事件上 btnObj.onclick = dosmoe;//注意:千万不要加小括号,btnObj.onclick = dosmoe()是错误的写法第三种: 将第二种dosome函数去掉,把btnObj.onclick = dosmoe;换为以下代码。相当于匿名函数。
btnObj.onclick = function(){ alert("do some"); }获取属性应该把这段代码放在input代码中设置属性下代码的下面,如果在上面,会出现获取不到属性。 也可以用load事件,写法:
<script type = "text/javascript"> function read(){ var btnObj = document.getElementById("mybtn"); btnObj.onclick = function(){ alert("do some"); } } </script> <body onload = "read()"> <input type = "button" value = "hello2" id = "mybtn"> </body>以上代码也可以写为:
<body> <script type = "text/javascript"> window.onload = read; function read(){ var btnObj = document.getElementById("mybtn"); btnObj.onclick = function(){ alert("do some"); } } </script> <input type = "button" value = "hello2" id = "mybtn"> </body>script代码可以进一步简化为:
//页面加载的过程中,将a函数注册给了load事件 //页面加载完毕之后,load事件发生,此时执行回调函数a //回调函数a执行的过程中,把b函数注册给了id="mybtn"的click事件 //当id="mybtn"的节点发生了click事件之后,b函数被调用执行 window.onload = function (){//回调事件a函数 document.getElementById("mybtn").onclick = function (){ alert("dosome"); } }