通常来说,javascript的事件模型有三种,它们分别是NN4、IE4+和W3C/Safari。
事件绑定方法I:绑定元素属性
<标记 ... ... 事件="事件处理程序" [事件="事件处理程序" ...]>
onClick = " myFunc() " >
把事件绑定到元素属性上有一个优点,即可以支持开发者把参数传递给事件处理器函数。接收事件的元素的引用则由一个特殊的参数值–this 关键字来传递。
例如:<body ... οnlοad="alert('网页读取完成,请慢慢欣赏!')" οnunlοad="alert('再见!')">
这样的定义<body>标记,能使文档读取完毕的时候弹出一个对话框,写着“网页读取完成,请慢慢欣赏”;在用户退出文档(或者关闭窗口,或者到另一个页面去)的时候弹出“再见”。
事件绑定方法II:绑定对象属性
<事件主角 - 对象>.<事件> = <事件处理程序>
对于 NN3+ 和 IE4+ 这两类浏览器,脚本编程人员可以以脚本语句的方式把事件绑定到对象上,而不是绑定到元素标识的属性上。每一个负责事件响应的元素对象都为自己能够识别的事件设置了相应的属性。对象属性名称是元素标识属性的小写形式,比如 onmouseover。
当您把一个函数的引用赋值给一个事件属性的时候,就发生了绑定。函数的引用是指函数的名称,但是不带函数定义中的括号。因此,如果要为一个名为 myButton 的按键的点击事件(click)进行绑定,使之激活一个定义为 myFunc() 的函数,则其赋值语句如下所示:
这个例子将 ignoreError() 函数定义为 window 对象的 onerror 事件的处理程序。
事件绑定方法III: 绑定 IE4+<SCRIPT FOR> 标识
<script language="JavaScript" for="对象" event="事件">
在 IE4+ 中,Microsoft 对 <SCRIPT> 标识实现了自己的扩展,可以将它包含的脚本语句和某个元素的一个事件类型进行绑定。支持这个绑定的标识属性(还没有被 W3C 批准为 HTML 的一部分)是 FOR 和 EVENT。
FOR 属性的值必须是您为元素的 ID 属性分配的唯一标识符。然后,您必须把事件的名称(onmouseover,onclick,等等)分配给 EVENT 属性。在上面的按键实例的基础上,我们必须对按键标识进行修改,使之包含一个 ID 属性:
脚本语句并不在函数中,而是在<SCRIPT> 标识中,如下所示:
// script statements here
< / SCRIPT>
alert('网页读取完成,请慢慢欣赏!');
</script>
this 对象 返回“当前”对象。在不同的地方,this 代表不同的对象。如果在 JavaScript 的“主程序”中(不在任何 function 中,不在任何事件处理程序中)使用 this,它就代表 window 对象;如果在 with 语句块中使用 this,它就代表 with 所指定的对象;如果在事件处理程序中使用 this,它就代表发生事件的对象。
一个常用的 this 用法:
<script>
...
function check(formObj) {
...
}
...
</script><body ...>
...
<form ...>
...
<input type="text" ... οnchange="check(this.form)">
...
</form>
...
</body>