js绑定时间的三种方式

绑定事件的3种方式

1: 直接写在html标签内声明

<divid="school" onclick="t();">

这种写法最古老,兼容性最强.属于DOMlev0级的标准.


这个效果,等同于在点击div的时候,执行"t();"这一语句,

全局范围内执行,因此,t函数内部的this指代全局对象-->window

想操作被点击的DOM对象,this就不行了.


:在这种绑定方式中,如何达到点击后,div的背景换成蓝色








spacer.gif






spacer.gif



























2种绑定方式:

DOM对象.onclick = function () {}

这种绑定是把一个DOM对象onclick属性赋值为一个函数,

因此,函数内部的this直接指向该DOM对象.


在这种绑定方式中,只能给一个事件,绑定一个处理函数

.onclick = fn1; .onclick =fn2;

最终的效果, .onclick =fn2;
如果用函数来调用其他函数的形式

.onclick = function (){fn1(),fn2()}

那么此时, fn1,fn2中的this又指向window


如何绑定多个函数, 并令this指向DOM对象



第三种绑定事件的方法:

DOM lev3的事件绑定标准


添加和去除监听事件.


addEventListener('+事件',函数); // 第一个参数事件参数, 没有前缀"on", w3c的标准,IE不支持


注意点1: 如果添加了多个事件处理函数,"添加时的先后顺序来执行"

注意占2:事件处理函数中的this 指代 DOM节点自身 (w3c标准)

注意点3:第一个事件参数,一律把事件名称的'on'去掉 (w3c标准)


去除绑定

removeEventListener('事件',函数)



IE下绑定事件与解除事件的方法

attachEvent('事件',函数) // 注意: 事件要加on

detachEvent('事件',函数) // 事件依然要加on



总结一下:

W3c addEventListener IEattachEvent()的不同

1: 函数名不同

2: 事件名不同, IE下要加on,w3c不加on

3: 加事件后的执行顺序不同, w3c按绑定事件的顺序来执行, IE6,7,8,是后绑定的事件先发生.

4: this的指向, w3c,绑定函数中的this指向 DOM对象, IE6,7,8,指向window对象
事件的捕捉与冒泡模型

w3c的模型中,

addEventListener支持3个参数来声明事件的模型为冒泡还是捕捉.

如果声明为 true,则为捕捉方式

如果声明为false, 或者不声明, 则为冒泡方式


注意: IEattchEvent 没有第3个参数,不支持捕捉模型


事件对象的概念:

当事件对应的函数被触发时, 函数会接收到一个事件参数,// w3c标准

xx.onclick = function (ev) {alert(ev)}

点击后,ev 参数就代表单击那一瞬间的"各个参数",以一个对象的方式传过去.


对于IE, 当事件发生的瞬间,事件对象赋值给window.event属性


事件的中断

如何中断事件的传播???????

w3c: 事件.stopPropagation();

IE, 事件对象.cancelBubble = true;



spacer.gif



spacer.gif


cancelBubble =true //IE取消冒泡

stopPropagation();// w3c取消冒泡


returnValue =false; // IE取消事件效果

preventDefautl();// w3c取消事件效果



取消事件的默认效果

事件对象.preventDefault(); // 阻止事件的默认效果, w3c方法

事件对象.returnValue = false; // 设置returnValue 的属性值为false;


你可能感兴趣的:(js,function,兼容性)