问答详情
源自:6-3 使用JS实现函数

哪里有问题?http://www.imooc.com/video/901

		function getclsname(cls,parent){
			var oparent=parent?document.getElementById(parent):document;
			var eles=[];
			var elements=oparent.getElementsByTagName("*");
			for(var i=0;i<elements.length;i++){
				if(elements[i].className==cls){
					eles.push(elements[i]);
				}
			}
			return eles;
		}
		
			window.onload=function(){
				window.onscroll=function(){
					var top=document.documentElement?document.documentElement.scrollTop:document.body.scrollTop;
					var menus=document.getElementById("menu").getElementsByTagName("a");
					var items=getclsname("item");
					var currentid="";
					for(var i=0;i<items.length;i++){
						var it=items[i];
						var itemstop=it.scrollTop;
						if(top>itemstop-200){
							currentid=it.id;
						}else{
							break;
						}
					}
					if(currentid){
						for(var j=0;j<menus.length;j++){
							var mu=menus[j];
							var href=mu.href.split("#");
							if(href[href.length-1]!=currentid){
								mu.className="";
							}else{
								mu.className="current";
							}
						}
					}
				}
			}

非常感谢!

提问者:飞天意大利面神兽 2016-07-14 10:28

个回答

  • Evilcome
    2016-08-03 23:55:26

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

  • 苍白的尾巴
    2016-07-22 11:56:55

    调用getclsname(cls,parent)时候的参数应该有两个参数,你只写了一个cls

    var items=getclsname("item");

    还应该把parent参数写上去。

  • 全国花式抖腿冠军
    2016-07-14 13:49:08

    调用getclsname的时候参数少传了一个