如何搜索文档

时间:2015-02-12 13:15:40

标签: javascript html

我有以下带有两个<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.bodydocument.documentElement的别名并且实际上并未指向HTML的<body>元素?

1 个答案:

答案 0 :(得分:6)

第一个锚点不在头部元素中。

  • 头部元素中不允许使用锚点
  • head元素的结束标记是可选的
  • body元素的开始标记是可选的

通过尝试在头部开始锚点,您隐式地结束头元素并启动body元素。

正文的head和start标记的结束标记是无效标记,将被忽略。