Jquery 为什么呢!document.body返回错误?
我一直在查看并试图了解他们的:Jquery 为什么呢!document.body返回错误?,jquery,html,Jquery,Html,我一直在查看并试图了解他们的: $(document).ready() 功能正常 在第407行我找到了这部分: 如果(!document.body){ 哪些接缝是确定文档是否已加载的关键点 我想知道的是: 为什么: !document.body 返回False while: document.body 返回:[object HTMLBodyElement] 只需删除第一个:.innerHTML (经过一个小时的搜索和阅读,我在谷歌上找不到合适的答案,所以现在我希望这里有一些专业人士可以帮助我,谢
$(document).ready()
功能正常 在第407行我找到了这部分:
如果(!document.body){
哪些接缝是确定文档是否已加载的关键点 我想知道的是:
为什么:
!document.body
返回
False
while:document.body
返回:
[object HTMLBodyElement]
只需删除第一个:
.innerHTML
(经过一个小时的搜索和阅读,我在谷歌上找不到合适的答案,所以现在我希望这里有一些专业人士可以帮助我,谢谢!)
编辑:是的,我知道
!document.body
来自JavaScript而不是JQuery,最终JQuery是用JavaScript代码构建的。你所问的与JQuery无关。事实上,它是JavaScript:
如果主体已加载,document.body始终返回true。因此!document.body意味着如果主体尚未加载,则执行一些操作
根据文档(),该属性适用于大多数浏览器的早期版本
正式地,从: 12.5.9逻辑非运算符(!)# 及 7.1.2托布利安(论点)# 抽象操作ToBoolean将参数转换为类型为的值 符合表10的布尔值:表10:ToBoolean转换
Argument Type Result
Undefined Return false.
Null Return false.
Boolean Return argument.
Number Return false if argument is +0, -0, or NaN; otherwise return true.
String Return false if argument is the empty String (its length is zero);
otherwise return true.
Symbol Return true.
Object Return true.
我想我已经理解了发生的事情和我误解的内容。
我最初只希望有2种不同的状态(真/假),但事实上有4种不同的状态,如下表所示:
| Page loading state | document.body | !document.body |
|=======================|===========================|================|
| Before page is loaded | ? | !false -> true |
|-----------------------|---------------------------|----------------|
| After page is loaded | [object HTMLBodyElement] | !true -> false |
我的错误是,我只查看了“加载后”行,并在
document.body
列中删除了true
。浏览器兼容性原因iirc。旧浏览器的一个遗迹每个浏览器都不一样。注释没有提示原因吗?另请参见确保body存在,至少,以防IE有点过分热情(罚单#5443)。
当我尝试:document.body
在W3Schools网站上,我没有得到False
/True
答案,我得到的是False
/[object HTMLBodyElement]
答案。
| Page loading state | document.body | !document.body |
|=======================|===========================|================|
| Before page is loaded | ? | !false -> true |
|-----------------------|---------------------------|----------------|
| After page is loaded | [object HTMLBodyElement] | !true -> false |