首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

下面这个ul,怎么点击每一列的时候alert其index。这样做为什么不对

2013-07-08 
下面这个ul,如何点击每一列的时候alert其index。这样做为什么不对?ul id testli这是第一条/lili

下面这个ul,如何点击每一列的时候alert其index。这样做为什么不对?
    


<ul id= "test">
<li>这是第一条</li>
<li>这是第二条</li>
<li>这是第三条</li>
</ul>
    


(function getIndex(){
var ul = document.getElementById("test");
var li = ul.getElementsByTagName("li");
                        
                        
for(var i=0, l = li.length ; i<l; i++){

                        /* 正确做法
li[i].onclick =( function(x){
return function(){
alert(x);
}
})(i);
                        */
                        
                         //为什么这种做法会在页面打开时,
                         //在未点击的情况下会立即弹出alert内容?(0 1 2)
li[i].onclick = (function(num){
return alert(num);
})(i);
}
})();


[解决办法]
引用:
Quote: 引用:

直接执行了匿名函数,然后匿名函数返回alert的返回值。。

正确的是返回了函数对象


试了一下,在正确的代码里让内部的function立即执行的确是同样的效果。

但是,立即执行是指无论是不是click,只要进入代码段,都会直接执行么?而不考虑是否click事件发生?



仔细看下2个代码的区别,第一个是执行匿名函数返回函数作为click事件,第二执行匿名函数,匿名函数中再执行alert语句,将alert语句的返回值作为click事件。


[解决办法]


[解决办法]
1楼正解。
正确的里面:onclick=函数
错误的里面:onclick=匿名函数(立即)执行后返回的值

热点排行