我的脚本没有捕获TypeError

时间:2015-12-16 20:31:11

标签: jquery

我需要一些帮助,我不知道为什么在某些网站上它没有错误,但有些网站却出错了。

它在我的控制台中显示错误通知:Uncaught TypeError:无法读取未定义的属性“length”。

任何建议都非常感谢。

jQuery(document).ready(function(){
jQuery( ".pagenav.home .menu > li:first-child a" ).addClass('important_color');
if (jQuery( ".menu-fixedmenu" ).length) {
    jQuery( ".menu-fixedmenu .menu a" ).each(function() {
        var id  = jQuery(this).attr('href');
        var lenght_id  = id.length;//***this line code error***
        if (typeof id !== "undefined" && lenght_id > 2) {
        if(id.search("#") != -1 && id.search("http")){
            jQuery( window ).scroll(function() {

                if(jQuery(id).isOnScreen()){
                    jQuery(id+' h2').removeClass('fadeInDown');
                    jQuery(id+' h2').addClass('animated fadeInUp');
                    var newid = id.split("#");
                    if(document.getElementById(newid[1]).getBoundingClientRect().top < 250){
                        jQuery( ".fixedmenu .menu > li a[href='"+id+"']" ).addClass('important_color');
                        }

                    else{
                        jQuery( ".fixedmenu .menu > li a[href='"+id+"']" ).removeClass('important_color');
                    }

                }
                else{
                    if(id != jQuery( ".menu > li:first-child a" ).attr('href') )
                        jQuery( ".fixedmenu .menu > li a[href='"+id+"']" ).removeClass('important_color');
                        if(jQuery(this).scrollTop() > 700)
                            jQuery( ".menu-fixedmenu .menu > li:first-child a" ).removeClass('important_color');
                        else
                            jQuery( ".menu-fixedmenu .menu > li:first-child a" ).addClass('important_color');

                        jQuery(id+' h2').removeClass('fadeInUp');
                        jQuery(id+' h2').addClass('animated fadeInDown');
                    }

            });
        }
        }
    });
}

});

1 个答案:

答案 0 :(得分:1)

因为在您的.menu-fixedmenu .menu a个元素中,href没有href导致错误的原因。

您可以通过执行if (id)来检查现有的 if(id) { var lenght_id = id.length; //***this line code error*** if (typeof id !== "undefined" && lenght_id > 2) { if (id.search("#") != -1 && id.search("http")) { jQuery(window).scroll(function() { if (jQuery(id).isOnScreen()) { jQuery(id + ' h2').removeClass('fadeInDown'); jQuery(id + ' h2').addClass('animated fadeInUp'); var newid = id.split("#"); if (document.getElementById(newid[1]).getBoundingClientRect().top < 250) { jQuery(".fixedmenu .menu > li a[href='" + id + "']").addClass('important_color'); } else { jQuery(".fixedmenu .menu > li a[href='" + id + "']").removeClass('important_color'); } } else { if (id != jQuery(".menu > li:first-child a").attr('href')) jQuery(".fixedmenu .menu > li a[href='" + id + "']").removeClass('important_color'); if (jQuery(this).scrollTop() > 700) jQuery(".menu-fixedmenu .menu > li:first-child a").removeClass('important_color'); else jQuery(".menu-fixedmenu .menu > li:first-child a").addClass('important_color'); jQuery(id + ' h2').removeClass('fadeInUp'); jQuery(id + ' h2').addClass('animated fadeInDown'); } }); } } } 值。

e.g。

{{1}}