苍白的尾巴
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参数都用了单引号写成字符串 也是没对象
网页定位导航特效
71387 学习 · 504 问题
相似问题