Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获范围错误:超过最大调用堆栈大小_Javascript_Jquery_Google Chrome - Fatal编程技术网

Javascript 未捕获范围错误:超过最大调用堆栈大小

Javascript 未捕获范围错误:超过最大调用堆栈大小,javascript,jquery,google-chrome,Javascript,Jquery,Google Chrome,我在chrome上收到错误“UncaughtRangeError:超过最大调用堆栈大小”。这是我的jQuery函数 $(window).scroll(function(){ if ($(this).scrollTop() < 170) { $('#main-nav').css('position', ''); $('#fixed-header-icon').slideUp().addClass('remove');

我在chrome上收到错误“UncaughtRangeError:超过最大调用堆栈大小”。这是我的jQuery函数

$(window).scroll(function(){
        if ($(this).scrollTop() < 170) {
            $('#main-nav').css('position', '');
            $('#fixed-header-icon').slideUp().addClass('remove');
            if ($('.ajelnews').length > 0) {
                $('.main-nav').removeClass('relative');
                $('.main-nav').css('top', '');
            }
            if (!$('#main-nav').hasClass('main-nav')) {
                $('#main-nav').removeClass("fixed-true");
                $(".close-fixed-header").css('display', 'none');
            }
        }
    });
$(窗口)。滚动(函数(){
if($(this).scrollTop()<170){
$('主导航').css('位置','');
$(“#固定标题图标”).slideUp().addClass('remove');
如果($('.ajelnews')。长度>0){
$('.main nav').removeClass('relative');
$('.main nav').css('top','');
}
if(!$('main-nav').hasClass('main-nav')){
$(“#主导航”).removeClass(“固定为真”);
$(“.close fixed header”).css('display','none');
}
}
});
从这一行开始,
$(“.close fixed header”).css('display','none')

$(窗口)。滚动(函数(){
if($(this).scrollTop()<170){
$('主导航').css('位置','');
$(“#固定标题图标”).slideUp().addClass('remove');
如果($('.ajelnews')。长度>0){
$('.main nav').removeClass('relative');
$('.main nav').css('top','');
}
if(!$('main-nav').hasClass('main-nav')){
$(“#主导航”).removeClass(“固定为真”);
$(“.close fixed header”).css('display','none');
}
}
});
因为您正在向滚动函数添加一个侦听器,在该函数中您正在执行slideUp,这会导致window.scroll位置发生更改。哪个inturn导致循环并进入无限循环

这就是你得到错误的地方。另一种情况是,您正在更改元素的显示属性

当您更改显示位置时,会发生什么情况

当css属性对任何元素显示
display:none
时,该特定元素将退出视图树或渲染树。这意味着浏览器将从视图中删除该特定图元


如果将其设置回
display:block
,则树会发生更改,并将元素放回视图。这会改变视图的高度和宽度,有时会导致滚动(取决于父级大小)。

而不是
.css('display','none')
,请尝试
.hide()
。除此之外,我们还可以使用。我不希望jQuery的
css
会导致类似的情况(这是一个堆栈溢出错误)。正如Cerburs所说,我们需要一个.
滚动
事件多次触发。。。我猜是
。slideUp()
是真正的原因
$(window).scroll(function(){
    if ($(this).scrollTop() < 170) {
        $('#main-nav').css('position', '');
        $('#fixed-header-icon').slideUp().addClass('remove');
        if ($('.ajelnews').length > 0) {
            $('.main-nav').removeClass('relative');
            $('.main-nav').css('top', '');
        }
        if (!$('#main-nav').hasClass('main-nav')) {
            $('#main-nav').removeClass("fixed-true");
            $(".close-fixed-header").css('display', 'none');
        }
    }
});