javascript - 为什么我收到 "Uncaught TypeError: Cannot read property ' body' of undefined”?

标签 javascript jquery dom event-handling jquery-events

我的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“怪癖”。错误

Uncaught TypeError: Cannot read property 'body' of undefined

每次滚动时

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

最佳答案

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

关于javascript - 为什么我收到 "Uncaught TypeError: Cannot read property ' body' of undefined”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31947906/

相关文章:

javascript - 请解释一下这段代码的含义

javascript - IE7 中的 Element.prototype?

javascript - 如何在不刷新网页的情况下填充数据库列表

javascript - 没有ivy如何编译库?

javascript - jquery循环 - 即使图像比浏览器窗口宽,也保持幻灯片居中

javascript - 如何检测用户是否点击了 "back"按钮

javascript - 在键值对中如何打印出一个不为空的值 JavaScript

asp.net - 在 ASP.NET 文本框中捕获按键

javascript - jquery如何获取post类型的ajax调用返回的状态消息?

javascript - 使用 fetch 后如何重新加载页面