• js——Document类型(三)


    DOM中的Document类型

    • Js通过Document表示文档类型。

    • document对象是HTMLDocument的实例,HTMLDocument继承自Document类型。

      document对象是window对象的一个属性。

    • Document与Node的关系:

      Js中所以节点类型都继承自Node类型,节点类型都享有共同的·基本属性和方法

    • Document节点具有以下特征:

      1. nodeType的值为9
      2. nodeName的值为“#document"
      3. nodeValue、parentNode、ownerDocument的值为null
      4. 其子节点可能是一个DocumentType,Element,或ProcessingInstrucion,Comment

    1.文档子节点

    Document子节点可能是一个DocumentType,Element,或ProcessingInstrucion,Comment

    (1)Document节点访问Element子节点的方式有两种:

    • documentElement属性,该属性始终指向HTML页面的

    • 通过childNodes列表也可以访问文档元素

      var html=document.documentElement;
      alert(html);//[object HTMLHtmlElement]
      alert(document.childNodes[1]);//[object HTMLHtmlElement]
      alert(html===document.childNodes[1]);//true
      
      

    doucment还有body属性,指向元素。

    window.onload=function(){
    			document.body.style.backgroundColor = "yellow";//需要事件触发
    		}
    

    (2)Document节点访问DocumentType子节点的方式:

    通常将<!DOCTYPE>标签看成一个与文档不同的实体

    • document.childNodes[0]

    • document.doctype属性

      alert(document.childNodes[0]);//[object DocumentType]
      alert(document.childNodes[0]===document.doctype);//true
      
    • 浏览器对document.doctype属性的支持不一致

    (3)对于标签外的注释,不同的浏览器处理的方式可能是不同的

    <!--这里是注释-->
    <html>
    <body>
    ....
    </body>
    </html>
    <!--这里是注释-->
    

    这个页面看起来一个有两个子节点:注释,元素,注释。但是在浏览器中有不同处理方式。有的可能忽略注释,有的可能只为第一个注释创造节点,有的会将这两种注释都当做节点。

    2.文档信息

    document作为HTMLDocument的实例,有一些Document没有的属性

    • title属性:获取内的标题</p> <pre><code class="language-js">document.title="new page title" </code></pre> </li> <li> <p>URL属性:包含页面完整的url</p> </li> <li> <p>domain属性:包含页面的域名,只有domain可设置,但不能将其设置为URL不包含的域</p> </li> <li> <p>referrer属性:保存着链接到当前页面的那个页面的url,在没有来源页面的情况下,referrer可能会包含空字符串。</p> <pre><code class="language-js">var url=document.URL; alert(url); var domain=document.domain;//只有domain可设置 alert(domain); var referrer=document.referrer; alert(referrer); </code></pre> </li> </ul> <h2 id="3查找元素">3.查找元素</h2> <p>(1)getElementById(元素的id)</p> <p>如果不存带相应id的参数则会返回null,如果有多个元素带相同的id,则返回文档中第一次出现的元素</p> <p>(2) getElementByTagName():接收一个参数,即要获取的元素标签名,返回的就是包含0或多个元素的NodeList。在html文档中,会返回一个与NodeList相似的”动态“集合HTMLCollection。</p> <p>HTMLCollection对象有一些方法和属性:</p> <ul> <li> <p>length属性</p> </li> <li> <p>item()方法:访问对象中的项,传入索引值,和[ ]用法类似</p> </li> <li> <p>namedItem()方法:通过元素的name特征取得项,传入name特征名</p> <pre><code><img src="1.jpg" name="myPic"> ... var images= getElementByTagName("img"); var myPic=images.namedItem("myPic"); </code></pre> </li> <li> <p>要获取文档所有的元素,可以向getElementByTagName()中传入“*”,这样返回HTMLCollection就包含整个页面的所有元素,并按出现的先后顺序排序。</p> </li> </ul> <p>(3)getElementByName():该方法只有HTMLDocument才有,这个方法会返回所有给定name特性的元素。</p> <h2 id="4特殊集合">4.特殊集合</h2> <p>这些都是HTMLCollection对象为访问文档常用部分提供的快捷方式</p> <ul> <li>document.anchors:文档中所有带name特性的<a>标签</li> <li>document.images:文档中所有img标签</li> <li>document.links:文档中所有带href特性的<a>标签</li> </ul> <h2 id="5dom一致性检测">5.DOM一致性检测</h2> <p>由于DOM有多个级别和部分,所以需要检测浏览器实现了DOM的哪些部分。</p> <p>document.implementation属性为此提供了相应的信息和功能对象。</p> <ul> <li> <p>document.implementation.hasFeature():接收两个参数,要检测的DOM功能名称和版本号。如果浏览器支持就返回true.</p> <pre><code class="language-js">alert(document.implementation.hasFeature("CSS","1.0"));//chrome中true </code></pre> </li> </ul> <p>hasFeature的缺点:</p> <p>实现这可以自行决定是否与DOM规范部分保持一致。所以除了hasFeature检测外,还可以使用能力检测。</p> <h2 id="6文档写入">6.文档写入</h2> <p>将输出流写入网页中,有四种方法:write(),writeln(),open()和close()。每一个都接收一个字符串参数,即要写入输出流的文本。</p> <pre><code class="language-html"><body> <p>this time is:</p> <script type="text/javascript"> document.write("<b>"+(new Date()).toString()+"</b>"); </script> </body> </code></pre> <p><img src="https://img2018.cnblogs.com/blog/1609498/201908/1609498-20190820221752473-430276630.png" alt="" loading="lazy"></p> <p>writeln()方法会比write()方法的后面多加“ "。</p> <p>如果在文档加载结束后调用document.write,那么输出内容将重写整个页面</p> <pre><code class="language-html"><body> <p>this time is:</p> <script type="text/javascript"> window.onload=function(){ document.write("<b>"+(new Date()).toString()+"</b>"); } </script> </body> </code></pre> <p>open()和close()分别用于打开和关闭网页输出流。</p> <pre><code class="language-js">function createNewDoc() { var newDoc=document.open("text/html","replace"); var txt="<html><body>Learning about the DOM is FUN!</body></html>"; newDoc.write(txt); newDoc.close(); } </code></pre>

  • 相关阅读:
    iOS中的HTTPS
    HTTPS抓包之Charles
    组件化开发的一些思考
    Xcode 调试技巧
    iOS崩溃日志分析
    iOS依赖库管理工具之Carthage
    13.类的关系总结
    12.组合(Composition)
    11.聚合(Aggregation)
    10.关联(Association)
  • 原文地址:https://www.cnblogs.com/ellen-mylife/p/11386040.html
Copyright © 2020-2023  润新知