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

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

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 ){
    forvar 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下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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