为啥我会收到“未捕获的类型错误:无法读取未定义的属性 'body'”?

Posted

技术标签:

【中文标题】为啥我会收到“未捕获的类型错误:无法读取未定义的属性 \'body\'”?【英文标题】:Why am I getting "Uncaught TypeError: Cannot read property 'body' of undefined"?为什么我会收到“未捕获的类型错误:无法读取未定义的属性 'body'”? 【发布时间】:2015-11-04 00:58:48 【问题描述】:

我的JS文件很简单

jQuery(function ( $ ) 
    // make elements with class 'same-height-as-width' have the self-explanatory property
    $(window).resize(function ( ) 
        $('.same-height-as-width').each( function ( ) 
            var thisElement = $(this);
            thisElement.height(thisElement.width());        
        );
    );

    window.onscroll = function () 

        var body = document.body; //IE 'quirks'
        var document = document.documentElement; //IE with doctype
        document = (document.clientHeight) ? document : body;

        if (document.scrollTop == 0) 
            alert("top");
        
    ;

);

给我带来麻烦的是var body = document.body; //IE 'quirks'。错误

未捕获的类型错误:无法读取未定义的属性“正文”

每次滚动时都会打印到控制台。然而,当我在控制台中输入document.body 时,控制台中显示的元素不是undefined。我也尝试将 window.onscroll 移到 jQuery(function ( $ ) 之外,但我得到了同样的错误。

【问题讨论】:

顺便说一下,你可以使用 CSS 来制作与宽度相同的高度(不知道宽度)。 @Popnoodles Example 肯定会受到赞赏,即使是现在。 看到这个答案CSS - Set Div Width 100% and Resize Keeping Aspect Ratio 【参考方案1】:

那是因为javascript variable hoisting,但不要让您感到困惑,不要使用“文档”作为变量的名称

【讨论】:

以上是关于为啥我会收到“未捕获的类型错误:无法读取未定义的属性 'body'”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会收到此错误

为啥我会收到这个 TypeError?

为啥我会收到序列化错误?

为啥我会收到错误消息?

知道为啥我会收到此错误吗?

为啥我会收到这种错误验证错误?