老师 我研究了一上午 问题实在不知道出现在哪 请老师解惑 上方为代码 下方为问题

老师 我研究了一上午 问题实在不知道出现在哪 请老师解惑 上方为代码 下方为问题

// 获取单个元素
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代码   
http://img1.sycdn.imooc.com//climg/5f27888009d6b34004560127.jpg这个里面  证明删除方法是正常的

但是出问题在navItemActive( idx )这个方法   当运行到delCls(navItem[i],"active");时   删除方法报indexOf的


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕言 2020-08-03 17:21:42

同学能够自己找到问题并解决,很棒,继续加油,祝学习愉快~

好帮手慕言 2020-08-03 14:38:22

同学你好,为了准确的定位到问题,给出解决方案,建议:把完整的代码(html,css,js)都粘贴上来,祝学习愉快~

  • 提问者 周五zhouwu #1
    找到问题了 是我的a标签没有添加class值 所以没有
    2020-08-03 14:41:27
提问者 周五zhouwu 2020-08-03 11:50:12
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师