切换语句错误?

0 javascript syntax if-statement switch-statement

我一直在编辑一个脚本,我点击它时将菜单图标变成蓝色.原始脚本有8个if语句.这工作得很好,但当我将if语句更改为交换机时,它停止工作.我已经三次检查它的语法错误,拼写错误等,但菜单图标仍然是灰色的!

任何人都可以给我一个解释吗?

window.onload = function() {

    [].forEach.call(document.querySelectorAll('.navico'), function(el) { 
        el.addEventListener('click', imageButtonClickHandler); 
    });


    function imageButtonClickHandler() 
    {  

        switch(this.id) 
        {
           case(this.id.match("aboutnav")):

                grey();
                $('#abouttitle').css('color', 'blue');
                $('#a').css('color', 'blue');
            break;

           case(this.id.match("routenav")):

                grey();
                $('#routetitle').css('color', 'blue');
                $('#b').css('color', 'blue');

            break;

           case(this.id.match("enternav")):

                grey();
                $('#entertitle').css('color', 'blue');
                $('#c').css('color', 'blue');

            break;

           case(this.id.match("racedaynav")): 

                grey();
                $('#racedaytitle').css('color', 'blue');
                $('#d').css('color', 'blue');

            break;

           case(this.id.match("gallerynav")):

                grey();
                $('#e').css('color', 'blue');
                $('#gallerytitle').css('color', 'blue');

            break;

           case(this.id.match("newsnav")):

                grey();
                $('#f').css('color', 'blue');
                $('#newstitle').css('color', 'blue');

            break;

           case(this.id.match("resultsnav")): 

                grey();
                $('#g').css('color' , 'blue');
                $('#resultstitle').css('color', 'blue');

            break;

           case(this.id.match("contactnav")): 

                grey();
                $('#contacttitle').css('color', 'blue');
                $('#h').css('color', 'blue');
            break;

            }
        }
    }

};
Run Code Online (Sandbox Code Playgroud)

谢谢!

hon*_*a_p 5

如果您正在寻找确切的ID值,请将this.id.match("something")更改为case"something".如果您尝试应用正则表达式来匹配字符串的部分,我认为您不能使用开关.

在你的情况下开关正在做什么:对于每种情况,它调用match方法并决定函数的结果(数组或null)是否等于你的字符串.这当然不会发生.