如何修复document.body是null-error

11 javascript null jquery width

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

$(window).width()
Run Code Online (Sandbox Code Playgroud)

作为分配给我的变量的值

$(document).ready(function(){});
Run Code Online (Sandbox Code Playgroud)

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

亲切的问候

编辑:抱歉,如果这一切都不清楚.我有一个演示: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
    });
}
Run Code Online (Sandbox Code Playgroud)

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

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

Dam*_*isa 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();
});
Run Code Online (Sandbox Code Playgroud)


bob*_*nce 6

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

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