这个问题困扰了我很长一段时间.对不起,如果这是一个愚蠢的问题.
以前,我知道你可以获得带有类名的元素
document.body.getElementsByClassName("foo");
Run Code Online (Sandbox Code Playgroud)
我是如此懒惰,所以我只是将代码复制并粘贴到另一部分来执行此操作
document.body.getElementById("bar");
Run Code Online (Sandbox Code Playgroud)
我不小心发现它不起作用.我测试了,它说
TypeError:Object#<HTMLBodyElement>没有方法'getElementById'
那么,为什么它有getElementsByClassName和getElementsByTagName和所有那些类似的方法,但只是没有getElementById?
typeof document === typeof document.body //true
Run Code Online (Sandbox Code Playgroud)
他们的类型是相同的,所以他们应该有相同的东西.但这似乎并非如此.
您可以使用具有相同类名的多个元素,从而缩小搜索范围以使特定节点开始有意义.
它对id没有意义,因为它应该是唯一的.
你只能有一个id在document,这是为什么呢getElementById是一个方法document.
例:
<body>
<div id="start">
<span class="a">
</div>
<div class="a">
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
a从节点开始搜索类<div id="start">将为您提供一个元素,
而如果您从顶部节点文档开始,它将以两个元素结束.
关于typeof比较:
typeof 1 == typeof 2 == "Number" // true
1 !== 2 // true.
Run Code Online (Sandbox Code Playgroud)
typeof只检查类型而不是值,document并且document.body都是对象,但是不同的对象.
typeof document === typeof document.body === typeof null === "object" // true
document === document.body // false!!!
Run Code Online (Sandbox Code Playgroud)
如你所见,null并document分享相同的类型,但他们有相同的方法......?没有
| 归档时间: |
|
| 查看次数: |
23843 次 |
| 最近记录: |