实现不了?求指教

来源:6-4 编程练习

北有冰洋

2017-03-14 10:52

<script>
    
  //定义getByClassName函数,让函数实现根据class name获取对象并返回
    function getByClassName(obj,cls){
        var elements=decument.getElementsTagName("*");
        var result=[];
        for( var i=0;i<elements.length;i++)
        {
        if(elements[i].className==cls){
            result.push("elements[i]");
        }
        return result;
     } 
    }
    
    function hasClass( obj, cls ){ 
        return obj.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)"));
    }
    
    function removeClass( obj, cls ){ 
        if( hasClass( obj, cls )){ 
            //remove
            var reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
            obj.className = obj.className.replace(reg, "");
        }
    }
    
    
    //定义getByClassName函数,让函数实现给对象增加class 
    function addClass(obj,cls){
        if(!hasClass( obj, cls )){
            obj.className+=" "+cls;
        }
    }
    
    window.onload = function(){ 
        
        window.onscroll = function(){         
            var top = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
            
            var menus = document.getElementById("menu").getElementsByTagName("a");
            
            var items = getByClassName(document.getElementById("content"), "item");
            
            var currentId = "";
            
            for ( var i=0; i< items.length; i++ ){ 
                var _item = items[i];
                var _itemTop = _item.offsetTop;
                if( top > _itemTop - 200 ){ 
                    currentId = _item.id;
                } else { 
                    break;
                }            
            }
        
                             
      //请补充此处代码,给正确的menu下的a元素class赋值current
            if(currentId){
                for(var j=0;j<menus.length;j++){
                    var _menu=menus[j];
                    var _href=_menu.href.split("#");
                    if(_href(_href.length-1)!=currentId){
                        removeClass(_menu,"currentId");
                    }
                        addClass(_menu,"currentId");
                }
            }
      
    
        }    
    }    
</script>


写回答 关注

2回答

  • 斌冰4421289
    2017-03-21 20:26:05
    已采纳

     return result;的位置错了,而且"elements[i]"不用双引号

  • qq_野孩子_2
    2017-03-14 19:29:38

      if(_href(_href.length-1)!=currentId){

                            removeClass(_menu,"currentId");

                        }

    这儿应该是_href[_href.length-1],数组里的元素应该是中括号的吧,你试试

网页定位导航特效

本课程讲解网页定位导航特效,仿天猫版地狗购物网,你值得拥有

71404 学习 · 486 问题

查看课程

相似问题