如何修复document.body是null-error

时间:2009-10-21 21:36:11

标签: javascript jquery null width

我有一个document.body在我的javascript中是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()

很抱歉,如果不清楚我虽然没有必要在这里放置演示,也不需要代码。 不过,我要感谢那些正在努力帮助的人!

4 个答案:

答案 0 :(得分:8)

我同意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();
});

答案 1 :(得分:6)

确保只有在包含$(window).width()标记后(例如,在准备好的回调中)和/或使用标准模式doctype声明后才调用<body> 。无论如何你应该这样做:Quirks Mode很糟糕。

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

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