问答详情
源自:1-5 编程练习

变量作用域

for(var i=0; i<titles.length; i++){
            titles[i].id = i;
            titles[i].onclick = function(){
                var _i = this.id;
                //alert(uls[_i].innerHTML);
                // 判断该列表,如果是显示的则将其隐藏,如果是隐藏的则将其显示出来
                if(uls[_i].style.display == "none"){
                    for(var j=0; j<titles.length; j++){
                        uls[j].style.display = "none";
                    }
                    uls[_i].style.display = "block";
                } else {
                    uls[_i].style.display = "none";
                }
                
                
            }
        }

想把for循环中的i传到onclick绑定的函数中,还有什么方法?

for(var i=0; i<titles.length; i++){
            var _i = i;
            titles[i].onclick = function(){
                //var _i = this.id;
                //alert(uls[_i].innerHTML);
                // 判断该列表,如果是显示的则将其隐藏,如果是隐藏的则将其显示出来
                if(uls[_i].style.display == "none"){
                    for(var j=0; j<titles.length; j++){
                        uls[j].style.display = "none";
                    }
                    uls[_i].style.display = "block";
                } else {
                    uls[_i].style.display = "none";
                }
                
                
            }
        }

像上面这样,为什么_i也是传不进去

提问者:悟道参禅 2015-09-10 17:21

个回答

  • EpisodeOne
    2016-03-02 19:19:32

     titles[i].id = i;的作用是给li标签添加“id”属性的,该属性是唯一的,只有指定(即点击)了特定的id,才会显示高亮。

    var _i = i 只是缓存一个变量没有实际意义。