1

ユーザーの選択に応じてテンプレートを変更するインデックスがあります。ユーザーがテンプレートを変更したら、メニューの色も変更したい。すべてのブラウザで動作しますが、IE ではエラー '1' is null or not a object in the line が表示されますreturn "#" + 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 の一致が IE で機能しないIE は RGB 値を 16 進数に変換するため、.match は別の値を渡します。

于 2012-11-23T01:34:24.517 に答える