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

达不到效果,求解?

代码达不到滚动效果,哪里出问题了?

提问者:西风潇潇 2016-05-19 19:39

个回答

  • rly0606
    2016-06-15 23:01:10

    <script type="text/javascript">
    	function getElementByClass(obj,clas){
    		var all=obj.getElementsByTagName("*");
    		var result=[];
    		for(var i=0,length=all.length;i<length;i++){
    			if(all[i].className==clas){
    				result.push(all[i]);
    			}
    		}
    		return result;
    	}
    	function hasClass(obj,clas){
    		return (obj.className.search(clas)==-1)?false:true;
    	}
    	function addClass(obj,clas){
    		if(!hasClass(obj,clas)){
    			obj.className+=" "+clas;
    		}
    	}
    	function deleteClass(obj,clas){
    		if(hasClass(obj,clas)){
    			obj.className.replace(clas," ");
    		}
    	}
    	window.onload=function(){
    		window.onscroll=function(){
    			var scrollTop=document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
    			var menu=document.getElementById("menu").getElementsByTagName("a");
    			var items=getElementByClass(document.getElementById("content"),"item");
    			var currentId='';
    			for(var i=0,length1=items.length;i<length1;i++){
    				var top=items[i].offsetTop;
    				if(scrollTop>top-300){
    					currentId="#"+items[i].getAttribute("id");
    				}
    				else{
    					break;
    				}
    			}
    			if(currentId){
    				//为menu设置正确的样式
    				for (var i = 0,length2=menu.length; i<length2; i++) {
    					//如果href等于当前的id,则添加样式
    					var href=menu[i].getAttribute("href");
    					if(href==currentId){
    						addClass(menu[i],"current");
    					}
    					//否则,删除样式
    					else{
    						deleteClass(menu[i],"current");
    					}
    				}
    			}
    		}
    	}
    	</script>

    求帮忙看下为什么我的样式删除不了?

  • 西风潇潇
    2016-05-19 19:47:53

    看了小伙伴们的问答,终于发现问题所在了:

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

    上面的运算是错误的,改为下面的代码,就OK了:

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