document.body.getElementById和document.getElementById的区别

lea*_*ner -1 html javascript

我正在从头学习javascript.我目前正在尝试掌握DOM.我有一个像这样的HTML页面:

<html>
<head>
    <title>javascript</title>
</head>
<body>
    <h1>Welcome to javascript</h1>

    Visit me <a href="facebook.com">here.</a>

    <p> <img id="image" src="kalam.jpg"></p>

    <script type="text/javascript" src="code.js">
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

现在,我想阅读a标签.

var links = document.body.getElementsByTagName("a")[0]; 

console.log(links.href);
Run Code Online (Sandbox Code Playgroud)

它工作正常.现在我想读图像.

var imageLink = document.body.getElementById("image");

console.log(imageLink.src);
Run Code Online (Sandbox Code Playgroud)

但是,上面的代码不起作用.

我收到一个错误:

未捕获的TypeError:document.body.getElementById不是函数.

将其更改为:

var imageLink = document.getElementById("image");

console.log(imageLink.src);
Run Code Online (Sandbox Code Playgroud)

工作良好.

我的问题是document.body.getEl...document.getEl..?之间的区别?

document.body读只有身体的一部分,而document.getEl..读取整个文档,包括标题等?如果是这样,那么上述代码不应该都有效吗?

Que*_*tin 8

document.getElementById() 从文档中获取具有匹配ID的元素.

document.body.getElementById() 不存在.

document.getElementsByTagName() 获取与文档中的标记名称匹配的所有元素.

someOtherElement.getElementsByTagName获取与标记名称匹配的所有元素以及哪些元素是其后代someOtherElement.

由于ID必须在HTML文档中是全局唯一的,因此通常不需要该getElementById方法存在于document对象本身以外的任何地方.