【问题标题】:how to fix a document.body is null-error如何修复 document.body 为空错误
【发布时间】:2010-12-08 21:30:39
【问题描述】:

我的 javascript 中有一个 document.body is null 错误,因为我使用的是:

$(window).width()

作为值分配给我的变量

$(document).ready(function(){});

我将非常感谢任何可以帮助我的人。

亲切的问候

编辑:对不起,如果这一切都不清楚。我有一个演示:http://www.wpmonk.com/demo/hypowired 起初主题会加载,然后变成白色(因为错误)但是当你重新加载时你可以看到整个主题,因为他知道 $(window).width() 的值

我正在使用此代码使布局居中(使用 css 不可能,因为左侧也需要有宽度。)

function positioneerElement(){      
    $breedte = (document.body.clientWidth - 1124) / 2;
    $('#bg_left').css({
        'width': $breedte
    });
    $('.container').css({
        'margin-left': $breedte
    });
}

我在加载函数中调用函数positioneerElement()

很抱歉,如果不清楚,我虽然没有必要在此处放置演示或代码。 不过,我要感谢那些试图提供帮助的人!

【问题讨论】:

  • 请发布一个最小的测试用例:足够的代码来完成并产生错误,但不会更多。
  • 你们为什么不学会对这样的问题投反对票?!将鼠标悬停在向下箭头上,阅读工具提示,然后做你该死的工作。
  • @Josh:我觉得可能有点苛刻。我想我们可能会先询问更多信息? Ayrton 可能真的认为不需要更多信息。希望他会更新问题。但是通过投票,人们不太可能试图提供帮助,他也不太可能得到答案。我认为 SO 社区是来帮助人们的,而不是因为沟通不畅而责备和惩罚他们......
  • 来吧@Damovisa,你知道所有关于代表的事情;)投票赞成修复。
  • @Justin - 哦,伙计,你是对的。对不起,我在想什么? :)

标签: javascript jquery null width


【解决方案1】:

您必须包含 jquery.js,而不是 jquery.min.js 它看起来像其中的一些错误 这对我有用

【讨论】:

    【解决方案2】:

    我同意 outis - 我们需要更多代码。

    也就是说:

    • 您确定在 $(document).ready 函数中完成所有您的工作吗?
    • 您确定有正确格式(和封闭)的正文标记和有效的 xhtml?
    • 所有浏览器都会出现这种情况吗?

    一个建议:

    如果将positioneerElement 函数也放入$(document).ready 函数中,问题是否仍然存在?我想知道浏览器是否在加载文档之前评估 document.body。

    $(document).ready(function() {
        function positioneerElement(){      
        $breedte = (document.body.clientWidth - 1124) / 2;
        $('#bg_left').css({
            'width': $breedte
        });
        $('.container').css({
            'margin-left': $breedte
        });
    
        // your other code, including
        positioneerElement();
    });
    

    【讨论】:

    • 我添加了更多信息,我在准备好的函数中完成了这一切,是的,我的代码应该是有效的 xhtml 并且在每个浏览器中都会发生这种情况
    • 非常感谢。显然,这一切都与此有关。我觉得这很奇怪,因为在其他项目中我不需要将函数放在我的 document.ready 中。干杯
    【解决方案3】:

    确保您只在包含<body> 标签(例如在就绪回调中)和/或使用标准模式文档类型声明之后才调用$(window).width()。无论如何你都应该这样做:怪癖模式很糟糕。

    问题是,要在 Quirks 模式下读取视口大小,jQuery 必须查看 document.body.clientWidth 而不是 document.documentElement.clientWidth。如果您还没有启动您的<body>,则不存在document.body 节点。

    【讨论】:

      【解决方案4】:

      嗯,根据你给我的信息,可能是身体还没有正确加载。更多详情请看这里:http://www.coderanch.com/t/122834/HTML-JavaScript/document-body-null-or-not#606782

      我会说更多,但我也同意 outis 你需要发布更多代码供我们调试。

      【讨论】:

        猜你喜欢
        • 2015-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-21
        • 2012-07-27
        • 1970-01-01
        相关资源
        最近更新 更多