attachEvent函数问题

猿敲月下码 2010-08-03 02:49:32
function f2(){
var oDiv = document.getElementById("d");
oDiv.attachEvent("onclick",fn);
oDiv.attachEvent("onclick",fn2);
}


以上代码跑了一下,先执行fn2,在执行fn.

但是书上说的是先fn再fn2...


求解释..

我看的书是<JavaScript高级程序设计> 人民邮电出版 Zakas 著 第231页
...全文
128 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
猿敲月下码 2010-08-03
  • 打赏
  • 举报
回复
书上说:事件处理函数是按照添加它们的顺序进行调用.
root_lee 2010-08-03
  • 打赏
  • 举报
回复
If you attach multiple functions to the same event on the same object, the functions are called in random order, immediately after the object's event handler is called.
root_lee 2010-08-03
  • 打赏
  • 举报
回复
记得没错的话,帮助文档里面是说,执行的顺序是随机的,跟绑定的先后顺序无关。
地狱羔羊 2010-08-03
  • 打赏
  • 举报
回复
你看的书里应该说的是符合标准的时间绑定,而不是针对IE
地狱羔羊 2010-08-03
  • 打赏
  • 举报
回复
FF,CHROME下,确实是从上到下的,IE里也确实是从下到上的。这个是IE不符合标准,可以自己写绑定时间方法替代IE的attachEvent
猿敲月下码 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 webadvocate 的回复:]
引用 4 楼 thc1987 的回复:

JScript code
function f3(){
var oDiv = document.getElementById("d");
oDiv.onclick = fn;
oDiv.attachEvent("onclick",fn2);
}


以上代码跑了下,顺序为先fn,在fn2...

3……
IE里没有固定的顺序可言,……
[/Quote]
OK 谢谢解答
WebAdvocate 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 thc1987 的回复:]

JScript code
function f3(){
var oDiv = document.getElementById("d");
oDiv.onclick = fn;
oDiv.attachEvent("onclick",fn2);
}


以上代码跑了下,顺序为先fn,在fn2...

3……
[/Quote]IE里没有固定的顺序可言,没什么规律
也没必要找它的规律
如果非要在IE里控制其执行顺序,那么用回调解决吧
猿敲月下码 2010-08-03
  • 打赏
  • 举报
回复
function f3(){
var oDiv = document.getElementById("d");
oDiv.onclick = fn;
oDiv.attachEvent("onclick",fn2);
}


以上代码跑了下,顺序为先fn,在fn2...

3L给个说法
WebAdvocate 2010-08-03
  • 打赏
  • 举报
回复
事件的执行,跟它的绑定还有 是否捕获有关系。
一般来说遵循先进先出的概念,Chrome,Firefox 都遵循这个规则。但IE中是没有顺序可言的。
<script>
function a() {
alert("a");
}
function b() {
alert("b");
}
function c() {
alert("c");
}
function d() {
alert("d");
}
function e() {
alert("e");
}
function addEvent(obj, type, fn) {
if (obj.addEventListener) {
obj.addEventListener(type, fn, false);
return true;
} else if (obj.attachEvent) {
return obj.attachEvent("on" + type, fn);
} else {
return false;
}
}
addEvent(window, 'load', a);
addEvent(window, 'load', b);
addEvent(window, 'load', c);
addEvent(window, 'load', d);
addEvent(window, 'load', e);
</script>


猿敲月下码 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 suiye007 的回复:]
你学习认真啊,这个东西,偶不会解释,有请高手!
[/Quote]
哥承认是个本本主义者
諾临風 2010-08-03
  • 打赏
  • 举报
回复
你学习认真啊,这个东西,偶不会解释,有请高手!

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧