老师 我研究了一上午 问题实在不知道出现在哪 请老师解惑 上方为代码 下方为问题
// 获取单个元素
function getElement( element ){
return document.querySelector(element);
}
// 获取指定元素下的所有元素
function getAllElement( element ){
return document.querySelectorAll( element );
}
// 获取元素的样式
function getCls( element ){
return element.getAttribute('class');
}
// 设置元素的样式
function setCls( element, cls ){
return element.setAttribute("class",cls);
}
// 为元素添加样式
function addCls( element,cls ){
var csCls=getCls(element);
// 防止无限添加样式 判断是否有该样式 有则不添加
if( csCls.indexOf(cls) === -1 ){
setCls(element,csCls+" "+cls);
}
return;
}
// 删除样式
function delCls( element,cls ){
var csCls=getCls(element);
if( csCls.indexOf(cls) != -1 ){
setCls(element,csCls.split(cls).join(" ").replace(/\s+/g,' '));
}
return;
}
function playDome( element ){
var dom=getElement(element);
var domCls=getCls(dom); // 获取要改变元素的class
setCls(dom,domCls.replace("_cs","_done")); // 替换class初始状态
}
window.onload = function(){
// 默认自动开始第一屏动画
setTimeout(playDome(".banner"),100);
}
var navItem = getAllElement(".nav_title a");
var nav_hover=getElement(".nav_title_hover");
// delCls(navItem[0],"active");
function navItemActive( idx ){
for( var i=0;i<navItem.length;i++ ){
delCls(navItem[i],"active");
nav_hover.style.left= 0 + "px";
}
addCls(navItem[idx],"active");
nav_hover.style.left = idx*90 + "px";
}
window.onscroll = function () {
var scr = document.documentElement.scrollTop;
if( scr>40 ){
addCls(getElement(".top"),"top_active");
}else{
delCls(getElement(".top"),"top_active");
}
if( scr>(640*1-400) ){
playDome(".section_2");
navItemActive(1);
}
if( scr>(640*2-400) ){
playDome(".section_3");
navItemActive(2);
}
if( scr>(640*3-400) ){
playDome(".section_4");
navItemActive(3);
}
if( scr>(640*4-400) ){
playDome(".section_5");
navItemActive(4);
}
}上方是我的js代码
在
这个里面 证明删除方法是正常的
但是出问题在navItemActive( idx )这个方法 当运行到delCls(navItem[i],"active");时 删除方法报indexOf的
28
收起
正在回答 回答被采纳积分+1
3回答

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星