我有以下带有两个<a>
元素的HTML:
<!doctype html>
<html>
<head>
<a href="http://www.google.com">www.google.com</a>
<script>
function onLoad() {
var bodyLinks = document.body.getElementsByTagName("a");
var msg = "There's "+bodyLinks.length
+" links in the body, of which the first one is: ["+bodyLinks[0].href+"].";
console.log(msg);
}
window.onload = onLoad;
</script>
</head>
<body>
<br/>
<a href="http://www.stackoverflow.com">www.stackoverflow.com</a>
</body>
</html>
其中一个<a>
元素位于<head>
元素中,另一个位于<body>
中。然而,在控制台上加载写入时上面的页面:
There's 2 links in the body, of which the first one is: [http://www.google.com/].
更令人费解的是,将document.body.getElementsByTagName
更改为document.documentElement.getElementsByTagName
会产生完全相同的结果。我是否理解document.body
是document.documentElement
的别名并且实际上并未指向HTML的<body>
元素?
答案 0 :(得分:6)
第一个锚点不在头部元素中。
通过尝试在头部开始锚点,您隐式地结束头元素并启动body元素。
正文的head和start标记的结束标记是无效标记,将被忽略。