如何修复 document.body 为空错误
Posted
技术标签:
【中文标题】如何修复 document.body 为空错误【英文标题】:how to fix a document.body is null-error 【发布时间】: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 - 哦,伙计,你是对的。对不起,我在想什么? :) 【参考方案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 你需要发布更多代码供我们调试。
【讨论】:
以上是关于如何修复 document.body 为空错误的主要内容,如果未能解决你的问题,请参考以下文章