没有弹出框
1
2
3
4
5
6
7
<code><script language=</code><code>"javascript"</code> <code>type=</code><code>"text/javascript"</code><code>></code>
<code>function</code> <code>start(){</code>
<code>var</code> <code>nid=document.getElementsByTagName(</code><code>"li"</code><code>);</code>
<code>nid.onclick=</code><code>function</code><code>(){alert(</code><code>"4"</code><code>);}</code>
<code>}</code>
<code>window.onload=start;</code>
<code></script></code>
这样才有弹出对话框
<code>nid.onclick=(</code><code>function</code><code>(){alert(</code><code>"4"</code><code>);})()</code>
运行后,不论点击哪一个li,都是alert提示“4”。
这就是一个需要注意的地方:
闭包允许内层函数引用父函数中的变量,但是该变量是最终值。闭包引用的变量i,是循环结束后的值
<code>var</code> <code>li=document.getElementsByTagName(</code><code>"li"</code><code>);</code>
<code>for</code><code>(</code><code>var</code> <code>i=0;i<li.length;i++){</code>
<code>li[i].onclick=</code><code>function</code><code>(){alert(i);}</code>
用闭包来解决
<script language="javascript" type="text/javascript">
var li=document.getElementsByTagName("li");
for(var i=0;i<li.length;i++){
(function(index){
li[index].onclick=function(){alert(index);}
})(i);
}
</script>
注意顺序:先弹出“clicked” 再弹出“also clicked”
<code><script></code>
<code>var</code> <code>fnClick1 =</code><code>function</code><code>(){ alert(</code><code>"clicked"</code><code>); };</code>
<code>var</code> <code>fnClick2 =</code><code>function</code><code>(){ alert(</code><code>"also clicked"</code><code>); };</code>
<code>var</code> <code>oDiv = document.getElementById(</code><code>"div"</code><code>);</code>
<code>oDiv.attachEvent(</code><code>"onclick"</code><code>,fnClick2);</code>
<code>oDiv.attachEvent(</code><code>"onclick"</code><code>,fnClick1);</code>
先弹出“also clicked” 再弹出“clicked”
.onclick后面的是最先执行的
attachEvent进去的事件 就DOM的解释是乱续的。
但实际测试时 IE是后绑定的先执行,FF是先绑定的先执行.
本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2009/12/02/1615644.html,如需转载请自行联系原作者