问答详情
源自:6-4 编程练习

求细心的人帮我看下到底出错错在哪里

    

  //定义getByClassName函数,让函数实现根据class name获取对象并返回


function getByClassName(obj,cls){

  var elements = obj.getElementsByTagName("*");

  var result = [];

  if(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, "");

}

}

function addClass(obj,cls){

   if(!hasClass( obj, cls)){

       obj.className += " "+cls;

   }

}

    //定义getByClassName函数,让函数实现给对象增加class 

    

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");

                    }

                }

               }

}

}


提问者:东方既白233 2017-03-30 17:05

个回答

  • 貌似祸害
    2017-09-21 22:53:16
    已采纳

    var top = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;

  • 东方既白233
    2017-03-30 17:10:11

    就是右侧的导航栏的焦点没有跟着scroll的变化而变化,就是图片区域对应的焦点没有发生变化