为了账号安全,请及时绑定邮箱和手机立即绑定

调试说obj.getElementsByTagName is not a function,怎么解决?

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;
	}
}

这句话我的拼写没错误啊?

正在回答

1 回答

好多错误啊!

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参数都用了单引号写成字符串 也是没对象

1 回复 有任何疑惑可以回复我~
#1

苍白的尾巴 提问者

非常感谢!
2016-07-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
网页定位导航特效
  • 参与学习       71404    人
  • 解答问题       486    个

本课程讲解网页定位导航特效,仿天猫版地狗购物网,你值得拥有

进入课程

调试说obj.getElementsByTagName is not a function,怎么解决?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信