首页 新闻 搜索 专区 学院

知道这段代码先弹哪个alert么请解释下原因及为什么(ie7

0
[已关闭问题]
<P>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;script&gt;<BR>&nbsp;var app = function()<BR>&nbsp;{<BR>&nbsp;&nbsp;var obj = document.getElementById("mypp");<BR>&nbsp;&nbsp;obj.attachEvent("onclick",foo1);<BR>&nbsp;&nbsp;obj.attachEvent("onclick",foo2);<BR>&nbsp;}</P> <P>&nbsp;&nbsp;var foo1 = function()<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;alert("clicked!");<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;var foo2 = function()<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;alert("also clicked!");<BR>&nbsp;&nbsp;};<BR>&nbsp;&lt;/script&gt;<BR>&lt;/head&gt;&nbsp;<BR>&nbsp;&lt;body onload="app()"&gt;<BR>&nbsp;&nbsp;&lt;p id="mypp"&gt;test&lt;/p&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/body&gt;<BR>&lt;/html&gt;</P>
早班火车的主页 早班火车 | 初学一级 | 园豆:180
提问于:2008-03-28 23:00
< >
分享
其他回答(2)
0
先出现also clicked!的,个人认为obj.attachEvent应该是栈结构的缘故,后进先出
BlackPhoenix | 园豆:185 (初学一级) | 2008-03-29 00:36
0
听某牛人说过,.net中的事件不一定按绑定的顺序发生, 事件激发的顺序不可控, 但是具体的原因未说明, 不知道在js是否也是这样子滴~~~
沙加 | 园豆:3680 (老鸟四级) | 2008-03-29 09:27
0
这一个的确是先执行also clicked!,不过,微软说这个执行顺序是随机的,所以不要依赖这个顺序哪怕你是测试过的! 其实事件附加类似于集合操作,每附加一个事件都会往集合里加一条数据,可以添加,但集合是没有办法保证顺序的,虽然每次的顺序可能差不多,但既然他不肯保证,你也就不能依赖,你试下下面这个就知道了,完全没谱: &lt;html> &lt;head> &lt;script> var app = function() { var obj = document.getElementById("mypp"); obj.attachEvent("onclick",foo1); obj.attachEvent("onclick",foo2); obj.attachEvent("onclick",foo3); obj.attachEvent("onclick",foo4); obj.attachEvent("onclick",foo5); obj.attachEvent("onclick",foo6); obj.attachEvent("onclick",foo7); } var foo1 = function(){alert("1");}; var foo2 = function(){alert("2");}; var foo3 = function(){alert("3");}; var foo4 = function(){alert("4");}; var foo5 = function(){alert("5");}; var foo6 = function(){alert("6");}; var foo7 = function(){alert("7");}; &lt;/script> &lt;/head> &lt;body onload="app()"> &lt;p id="mypp">test&lt;/p> &lt;/body> &lt;/html>
丁学 | 园豆:18530 (专家六级) | 2008-03-29 09:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册