1

我有一个索引,可以根据用户选择的内容更改其模板。一旦用户更改其模板,我希望菜单也改变颜色。它适用于所有浏览器,但在 IE 中,它给了我错误 '1' is null or not an object in the linereturn "#" + hex(bg[1]) + hex(bg[2]) + hex(bg[3]);

这是我的代码

jQuery(document).ready(function(){

        var bg = convert(jQuery('#body').css('background-color'));
        var font = convert(jQuery('.left').css('color'));
        if(bg =='#ffffff' || bg=='undefined'){
            bg = '#000000';
            font='#ffffff';
        }


        jQuery('.mainmenu').hover(
            function(){
              var $this = $(this);
              $this.data('bgcolor', $this.css('background-color')).css('background-color', '#FFFFFF' );
            },
            function(){
              var $this = $(this);
              $this.css('background-color', $this.data('bgcolor'));
            }
        ); 
        jQuery('.submenu').hover(
            function(){
                var $this = $(this);
                $this.data('bgcolor2', $this.css('background-color')).css('background-color', bg );
            },
            function(){
                var $this = $(this);
                $this.css('background-color', $this.data('bgcolor2'));
            }
        );
        jQuery('.submenu2').hover(
            function(){
                var $this = $(this);
                $this.data('color', $this.css('color')).css('color', font );
            },
            function(){
                var $this = $(this);
                $this.css('color', $this.data('color'));
            }
        );
    });
    function convert(bg){
        bg = bg.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
        return "#" + hex(bg[1]) + hex(bg[2]) + hex(bg[3]);
    }
    function hex(x) {
        return ("0" + parseInt(x).toString(16)).slice(-2);
    }
</scri
4

1 回答 1

0

这是来自的答案:Javascript match 在 IE 中不起作用IE 将 rgb 值转换为十六进制,因此 .match 传递了不同的值。

于 2012-11-23T01:34:24.517 回答