我一直在编辑一个脚本,单击该脚本时,它将菜单图标变为蓝色。
原始脚本有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;

            }
        }
    }

};


谢谢!

最佳答案

如果要查找确切的ID值,请将this.id.match(“ something”)更改为大小写“ something”。如果您尝试应用正则表达式来匹配字符串的各个部分,我认为您不能使用switch。

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

10-07 16:17
查看更多