代码达不到滚动效果,哪里出问题了?
<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>
求帮忙看下为什么我的样式删除不了?
看了小伙伴们的问答,终于发现问题所在了:
var top=document.documentElement?document.documentElement.scrollTop:document.body.scrollTop;
上面的运算是错误的,改为下面的代码,就OK了:
var top=document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;