哪里错了??找错真的眼睛都看花了

来源:6-4 编程练习

Danni11

2017-10-10 21:49

//定义getByClassName函数,让函数实现根据class name获取对象并返回
	function getClassName(obj,cls){
	    var elements=obj.getElementsByTagName("*");
	    var result=[];
	    for(var i=0;i<elements.length;i++){
	        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.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,"current");
              }else{
                  addClass(_menu."current");
              }
          }
      }
      
	
		}	
	}


写回答 关注

1回答

  • stefanie_chen
    2017-10-20 16:51:37

    第一段的那个没有判断

    function getByClassName(obj, cls) {

                var result = [],

                    eles = null;

                

                if(!obj) obj = document;

                if(obj.getElementsByClassName) {

                    result = obj.getElementsByClassName(cls);

                } else {

                    eles = obj.getElementsByTagName("*");

                    for(var i=0; i<eles.length; i++) {

                        if(eles[i].className.indexOf(cls) != -1){

                            result.push(eles[i]);

                        }

                    }

                }

                return result;

            }

    最后的那个addclass应该是逗号

    addClass(_menu,"current");

网页定位导航特效

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

71404 学习 · 486 问题

查看课程

相似问题