老师 我研究了一上午 问题实在不知道出现在哪 请老师解惑 上方为代码 下方为问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | // 获取单个元素 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积分~
来为老师/同学的回答评分吧