首页 > JavaScript > document.documentElement
2010二月24

document.documentElement

看《JavaScript 高级程序设计》书中有 document.documentElement 这样的用法,看文章内容说是获取 <html/> 元素。不过从来没这么用过,简单写了个程序验证了一下。

演示地址1:http://www.xiaoxiaozi.com/code/dom/domele1.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Script 闭合标签</title>
    </head>
    <body>
        <script type="text/javascript">
            var oHtml = document.documentElement;
               
            alert(oHtml.tagName);
        </script>
    </body>
</html>

看来还真是代表的<html/>元素,那如果我把html标签给去掉返回什么呢?

演示地址2:http://www.xiaoxiaozi.com/code/dom/domele2.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>document.documentElement</title>
    </head>
    <body>
        <script type="text/javascript">
            var oHtml = document.documentElement;
           
            alert(oHtml.tagName);
   
        </script>
    </body>

咱们再来测试一下,我通过document.getElementsByTagName获取html试试,看看二者到底是不是同一个东西

演示地址3:http://www.xiaoxiaozi.com/code/dom/domele3.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>document.documentElement</title>
    </head>
    <body>
        <script type="text/javascript">
            var oHtml = document.documentElement;
           
            var oHtml2 = document.getElementsByTagName('html')[0];
           
            alert(oHtml == oHtml2);
           
            alert(oHtml.tagName);
        </script>
    </body>
</html>

那么,如果我把html标签再删掉时,oHtml2还能获取到吗?

演示地址4:http://www.xiaoxiaozi.com/code/dom/domele4.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>document.documentElement</title>
    </head>
    <body>
        <script type="text/javascript">
            var oHtml = document.documentElement;
           
            var oHtml2 = document.getElementsByTagName('html')[0];
           
            alert(oHtml == oHtml2);
           
            alert(oHtml.tagName);
        </script>
    </body>

稍微有些不解,这个html标签都没了,为啥还能取到呢?看书中有这么一句话,难道可以解惑?

要访问<html/>元素(你应该明白这是该文件的document元素),你可以使用document的documnetElement特性

作者说应该明白的东西我原来还真不明白,记录一下,有心得就是好事。

Good good study ,day day up!~

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2010/02/24/1709/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

4 Responses to “document.documentElement”

  1. #1 JS领事 回复 | 引用 Post:2010-02-26 20:41

    学习了
    不过既然是获取整个document
    不是应该等载入完全再test比较准确?

    [回复]

  2. #2 simaopig 回复 | 引用 Post:2010-02-26 21:13

    @JS领事
    你是说onload是吧?但是上面的dom元素已经出来了。

    [回复]

  3. #3 小明豬 回复 | 引用 Post:2010-02-27 00:24

    昏倒,我也不理解了,用document.body查body标签,但是删掉body标签后数值就变成Null ,我把所有的标签都删了还是能获取到HTML :shock:

    [回复]

  4. #4 pp 回复 | 引用 Post:2010-04-28 13:47

    html是默认有的,无论你写不写。。

    [回复]

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)