老师 我研究了一上午 问题实在不知道出现在哪 请老师解惑 上方为代码 下方为问题
// 获取单个元素 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 星