滑动的时候不能保证滑到那个绝对的top值
理解了,不用回答了。。
我也是自己查了很久才发现是top的值获取不到,用原来的方法一直0 。也是用的chrome内核。
然后我百度了一下,然后用了 这个
window.pageYOffset; //页面向上滚动的距离
来代替滚动条滚动的距离。
因为你这是一个页面的内容,滚动条滚动的时候并不是点击那个链接,这两个动作不一样,点击那个链接时是访问了那个超链接,所以链接后面会出现#item之类的字符。而滚动条没有访问,所以没有那个#item之类的字符。
通过getAttribute('href')获得的是#item1/#item2.。。。。。带有#
通过getAttribute('id')获得的是item1/item2......而不带有#
可以通过.split('#')的方法将#item1分为两个数组,['#','item1']
再用数组中最后一个同currentId进行比较,就能够获得相等的值
如最后一图选中两个部分更改后就可以实现
本人也是初学小白,语言使用比较简单,用错专用术语的还请请见谅!
哈,试了确实可以。大概是每个人的思维习惯不同吧,老师用他熟悉的方法给我们演示.
有一个 hasclass 的判断
function hasclass(obj,cls){
return obj.className.match(new Regxp("(\\a|^)"+cls+"(\\a|$)"));
}
function removeClass(obj,cls){
if(hasclass(obj,cls)){
var reg=new Regxp("(\\a|^)"+cls+"(\\a|$)")
obj.className=obj.className.relace(reg,"");
}
}
function removeClass(obj,cls){
if(!hasclass(obj,cls)){
obj.className+=""+cls;
}
}
私有变量
var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
用这个代替
if( _href[_href.length-1] != currentId ) {
_menu.className = "" ;
} else {
_menu.className = "current";
}
百度到方法了- -这里因为单个class就这么写- -了忘记了
是的,js可以用 setAttribute('class','className')