本章学习目标:
不同的浏览器有不同实现事件流的方法。
一、取得id = div1的元素节点。
var div1 = document.getElementById("div1");
//设置元素节点的onclick属性
div1.onclick = function(){alert("div1 被点了");}
或
function divClick(){alert(‘点中’);}
div1.οnclick=divClick;
注意:
1、绑定事件处理程序时,后面不能加括号
2.必须确保在元素之后设置事件处理程序。
3.可在window.onload中指定处理程序。
二、在事件属性中指定
<div id="div1" οnclick="alert("div1 被点了.");" ></div>
一、IE浏览器
var div1 = document.getElementById("div1");
//添加事件处理程序
div1.attachEvent("onclick",click1);//("事件处理程序的名称",函数)
//删除事件处理程序
div1.detachEvent("onclick",click1);
function click1(){
alert("div1 is click...");
}
提示:可以在一个事件上添加多个事件处理函数。
二、DOM
var div1 = document.getElementById("div1");
//添加事件处理程序,true:捕获阶段; false:冒泡阶段
div1.addEventListener("click",click1,false);//("事件名称",函数,冒泡或捕获阶段)
//删除事件处理程序
div1.removeEventListener("click",click1,false);
function click1(){
alert("div1 is click...");
}
提示:删除事件处理程序时,阶段要相同。
传统事件处理程序是在冒泡阶段添加的。
兼容性问题的解决
function myaddEvent(obj,event,fn){//对象 ,事件,函数, if(document.all){ obj.attachEvent('on'+event,fn); }else{ obj.addEventListener(event,fn);//第三个参数默认为false(冒泡) } }
表单验证例子...
超链接例子。
<a href="a.html" οnclick="return confirm('要跳转吗?')">a.html</a>
注意:是根据返回结果是true或false来确定是否执行默认行为。
IE 得到事件对象;
div1.onclick = function(){
var e = window.event;
}
DOM得到事件对象
div1.onclick = function(ev){
var e = ev;
}
兼容性问题:
div1.onclick = function(ev){
var e = windo.event||ev;
}
event属性和方法
IE DOM
获取事件源 | e.srcElement | e.target |
获取字符码 | e.keyCode | e.charCode |
阻止默认行为 | e.returnValue=false | e.preventDefault() |
中止冒泡传播 | e.cancelBubble=true | e.stopPropagation() |
div1.onclick = function(e){
var ev = window.event||e;//获取事件对象
var srcObj = ev.srcElement||ev.target;
}