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

这个错在哪?

function hasClass(obj, cls) {
return obj.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)"));
}

function removeClass(obj, cls) {
if(hasClass(obj, cls)) {
//remove
var reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
obj.className = obj.className.replace(reg, "");
}
}

    function addClass(obj, cls){
        if(!hasClass(obj, cls)){
            obj.className += " " + cls;
        }
    }

//定义getByClassName函数,让函数实现给对象增加class 
function getclsname(cls, parent) {
var oparent = parent ? document.getElementById(parent) : document;
var eles = [];
var elements = oparent.getElementsByTagName("*");
for(var i = 0; i < elements.length; i++) {
if(elements[i].className == cls) {
eles.push(elements[i]);
}
}
return eles;
}

window.onload = function() {

window.onscroll = function() {
var top = document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop;

var menus = document.getElementById("menu").getElementsByTagName("a");

var items = getclsname("item");

var currentId = "";

for(var i = 0; i < items.length; i++) {
var _item = items[i];
var _itemTop = _item.offsetTop;
if(top > _itemTop - 200) {
currentId = _item.id;
} else {
break;
}
}

if(currentId) {
for(var i = 0; i < menus.length; i++) {
var mu = menus[i];
var href = mu.href.split("#");
if(href[href.length - 1] != currentId) {
removeClass(mu, "current");
} else {
addClass(mu, "current");
}
}
}
}
}

非常感谢!

正在回答

2 回答

视屏里面的是这个,但是我一直运行不了,但改成了 var top = document.documentElement.scrollTop || document.body.scrollTop; 这样之后才行,为什么?

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

钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱

对呀,为什么不行,而且老师也是这样写的,而且是系统自己写的,为什么系统会弄个错的给我们?
2017-08-12 回复 有任何疑惑可以回复我~
#2

慕先生7297594 回复 钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱

好像是不同浏览器的兼容性问题,还是用着个吧,兼容性比较好。
2017-10-07 回复 有任何疑惑可以回复我~

第35行改成var top = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;

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

飞天意大利面神兽 提问者

不行。。。
2016-07-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

这个错在哪?

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