西风潇潇
2016-05-19 19:39
代码达不到滚动效果,哪里出问题了?
<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;
网页定位导航特效
71391 学习 · 504 问题
相似问题