JavaScript for循环元素取下标问题

<ul>
    <li>fg</li>
    <li>gd</li>
    <li>gds</li>
    <li>ghe</li>
    <li>ghd</li>
</ul>

                
var li = document.getElementsByTagName("li");
            for(var i=0;i<li.length;i++){
                (function(m){
                    li[m].onclick = function(){
                        for(var j=0;j<li.length;j++){
                            li[j].className="";                    
                        }
                        li[m].className = "active";
                    }
                })(i)
                
            }
var li = document.getElementsByTagName("li");
            for(var i=0;i<li.length;i++){
                    li[i].index = i;
                    li[i].onclick = function(){
                        for(var j=0;j<li.length;j++){
                            li[j].className="";                    
                        }
                        li[this.index].className = "active";
                    }
            }
var li = document.getElementsByTagName("li");
            for(var i=0;i<li.length;i++){
                    
                    li[i].onclick = function(){
                        for(var j=0;j<li.length;j++){
                            li[j].className="";                    
                        }
                        this.className = "active";
                    }
            }