苍白的尾巴
2016-07-22 11:54
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 = ""; /*console.log(top);*/ for (var i = 0; i < items.length; i++) { var _item = items[i]; var _itemTop = _item.offSet; if(top > _itemTop -200){ currentId = _item.id; }else{ break; } } if(currentId){ for (var j = 0; j < menus.length; j++) { var _menu = menus[i]; var _href = _menu.href.split('#'); if(_href[_href.length-1] != currentId){ removeClass('_menu','current'); }else{ addClass('_menu','current'); } } } } } /*根据className找元素*/ function getByClassName(obj,cls){ var elements = obj.getElementsByTagName('*'); var result = []; for (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)){ var reg = new RegExp("(\\s|^)"+cls+"(\\s|$)"); obj.className = obj.className.replace(reg,""); } } function addClass(obj,cls) { if(!hasClass(obj,cls)){ obj.className += " " + cls; } }
这句话我的拼写没错误啊?
好多错误啊!
var items = getByClassName("document.getElementById('content')",'item');
第一这里用了双引号括住导致变了字符串,所有getByClassName函数解释不到对象OBJ所以报错,
var _itemTop = _item.offSet;
这里获取了item的偏移值,但没获取偏移的高应该.offsetTop
if(currentId){
for (var j = 0; j < menus.length; j++) {
var _menu = menus[i];
var _href = _menu.href.split('#');
if(_href[_href.length-1] != currentId){
removeClass('_menu','current');
}else{
addClass('_menu','current');
}
}
}
这一段两处错误,变量值为j,你却引用了i,导致循环都没用的情况_menu获取不到对象,应该menu[j];
removeClass和addClass函数都用obj参数都用了单引号写成字符串 也是没对象
网页定位导航特效
71396 学习 · 486 问题
相似问题