日期:2014-05-16 浏览次数:20327 次
<script> //闭包问题 for(var i=0;i<menu_li.length;i++){ (function (n){ menu_li[n].onclick = function(){ for(var i=0;i<menu_li.length;i++){ //必须用 var i 不能访问上级的i menu_li[i].className = ''; c_li[i].className = ''; } this.className = 'tabFocus'; alert(n); //现在就不会一直是4了 } })(i); } </script>
------解决方案--------------------
闭包
menu_li[i].index = i; // 这里指定下标 就能取了
menu_li[i].onclick = function(){
alert(this.index);
}
------解决方案--------------------
当i=4的时候,匿名函数还没运行呢,到点击选项卡的时候,匿名函数就会沿着作用域链访问外层函数中的i,而外层函数中的i=4,若想解决这个问题,就扩展一下aler(i)所在函数的作用域链,外层加个立即执行的匿名函数,匿名函数有一个参数,用来保存变量i