如何在带有JavaScript代码的if条件中使用函数方法?

Mah*_*hag 3 html javascript function

我想在我的JavaScript代码中给出条件方法.此代码在Internet Explorer 10版本中不起作用.当我在JavaScript验证器中粘贴此代码时,会显示以下消息:

函数声明不应放在块中.使用函数表达式或将语句移动到外部函数的顶部.

我怎么能在这里有功能?

            if(jQuery("header").attr("id") == "header-style-two")
        {
                    function sticky_relocate() {
                        var window_top = jQuery(window).scrollTop();
                        var div_top = jQuery('#sticky-anchor').offset().top;
                        if (window_top > div_top) {
                            jQuery('.mainmenu-area').removeClass('light-menu');
                            //This is for when div in top         
                        } else {
                            jQuery('.mainmenu-area').addClass('light-menu');
                            //This is for when div in not top
                        }
                    }

                    jQuery(function () {
                        jQuery(window).scroll(sticky_relocate);
                        sticky_relocate();
                    }); 
        }   
Run Code Online (Sandbox Code Playgroud)

Ale*_*ara 6

你不能在if块中使用命名函数(它不符合规范并且提升会使它相当混乱,但是一些JavaScript引擎可能会尝试补偿不良代码,这就是它可能在某些浏览器中工作的原因) ,但您可以将函数分配给if块中的变量.

而不是:

function sticky_relocate() {
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

var sticky_relocate = function() {
Run Code Online (Sandbox Code Playgroud)

所以这样的事情会起到作用:

if(jQuery("header").attr("id") == "header-style-two")
{
    var sticky_relocate = function() {
        var window_top = jQuery(window).scrollTop();
        var div_top = jQuery('#sticky-anchor').offset().top;
        if (window_top > div_top) {
            jQuery('.mainmenu-area').removeClass('light-menu');
            //This is for when div in top         
        } else {
            jQuery('.mainmenu-area').addClass('light-menu');
            //This is for when div in not top
        }
    }

    jQuery(function () {
        jQuery(window).scroll(sticky_relocate);
        sticky_relocate();
    }); 
}
Run Code Online (Sandbox Code Playgroud)