zoukankan      html  css  js  c++  java
  • 1.33 JavaScript之HTML的DOM(三)

    1.33 JavaScript之HTML的DOM(三)

    一、DOM 是Document Object Model( 文档对象模型 )的缩写。 

    DOM把所有的html都转换为节点 、整个文档 是一个节点 、元素 是节点 
    元素属性 是节点 、元素内容 是节点 、注释 也是节点 

    <html>
    <body>
    <div id="d1">hello HTML DOM</div>
     </body>
      <script>
    function p(s){
        document.write(s);
        document.write("<br>");
    }
    //通过document.getElementById获取了id=d1的div标签对应的元素节点 
    var  div1 = document.getElementById("d1");
    p("文档节点"+document);
    p("元素"+div1);
    //然后通过attributes 获取了该节点对应的属性节点 
    p("属性节点"+div1.attributes[0]);
    //通过childNodes获取了内容节点
    p("内容节点"+div1.childNodes[0]);
    </script>
      </html>

    二、获取节点

    在设计html的时候,一个元素对应的id应该是唯一的。 
    1.可以通过document.getElementById 获取某个元素对应的元素节点对象

    2.所有的元素都有标签名 、通过 getElementsByTagName 根据标签名称获取一个元素数组。

    <html>
    <div id = "d1">hello HTML DOM</div>
    <div >hello BOM</div>
    <div >hello DOM</div>
    <script>
    //1.document.getElementById 获取某个元素对应的元素节点对象
        var  div1 = document.getElementById("d1");
        document.write(div1);
        document.write("<br>");
    //2. getElementsByTagName 根据标签名称获取一个元素数组。
    var  divs = document.getElementsByTagName("div");
     for(i=0;i<divs.length;i++){
      document.write(divs[i]);
      document.write("<br>");
    }
    </script>
    </html>

    3、通过类名获取元素节点,与 getElementsByTagName 类似的,也可以通过 getElementsByClassName 根据class返回一个节点数组

    <html>
    <h1  class="d" >hello javascript</h1>
    <h2  class="d" >hello BOM</h2>
    <div  class="d" >hello DOM</div>
    <br>
    <script>
    var  elements= document.getElementsByClassName("d");
     
    for(i=0;i<elements.length;i++){
      document.write(elements[i]);
      document.write("<br>");
    }
     </script>
    </html>

    4、表单元素都有name属性,通过getElementsByName可以根据name属性的值,获取元素节点。

    <html>
    用户名 <input name="userName"> <br>
    密码  <input name="userPassword">
    <br>
    <script>
    var  elements= document.getElementsByName("userName");
      
    for(i=0;i<elements.length;i++){
      document.write(elements[i]);
      document.write("<br>");
    }
      </script>
    </html>

    这是因为javascript是解释语言,是顺序执行的。 在执行到 document.getElementById的时候,div标签还没有加载,所以无法获取。

    5、获取节点的属性

      nodeName 节点名称

      1、document.nodeName 文档的节点名,是 固定的#document
      2、div1.nodeName 元素的节点名,是对应的标签名 div
      3、div1.attributes[0].nodeName 属性的节点名,是对应的属性名 id
      4、div1.childNodes[0].nodeName 内容的节点名,是固定的 #text

      nodeValue 节点值

      1、document.nodeValue 文档的节点值,是 null
      2、div1.nodeValue 元素的节点值,是null
      3、div1.attributes[0].nodeValue 属性的节点值,是对应的属性值 d1
      4、div1.childNodes[0].nodeValue 内容的节点值,是内容 即: #text

      nodeType 节点类型(元素1,属性2,文本3,注释8,文档9)

      1、document.nodeType 文档的节点类型,是 9
      2、div1.nodeType 元素的节点类型,是 1
      3、div1.attributes[0].nodeType 属性的节点类型,是 2
      4、div1.childNodes[0].nodeType 内容的节点类型,是 3

      innerHTML 元素的文本内容 id、value

      1、修改与获取内容的值可以通过 childNodes[0].nodeValue进行 、还有个简便办法就是通过innerHTML进行。 效果是一样的。
      className 元素上的属性input1.className

    三、HTML DOM常用事件

    3.1 焦点事件

    当组件获取焦点的时候,会触发onfocus事件 
    当组件失去焦点的时候,会触发onblur事件

    <input type="text" onfocus="f()"  id="input1" placeHolder="输入框1" >
    <br>
    <br>
    <input type="text" id="input2" onblur="b()"placeHolder="输入框2">
    <br>
    <br>
    <div id="message"></div>
     <script>
    function f(){
     document.getElementById("message").innerHTML="输入框1获取了焦点";
    }
     function b(){
     document.getElementById("message").innerHTML="输入框2丢失了焦点";
    }
    </script>

    3.2 点击事件

    点击事件,由单击,双击按两个事件组成
    当在组件上单击的时候,会触发onclick事件
    当在组件上双击的时候,会触发ondblclick事件
    注1:在组件上,按下空格或则回车键也可以造成单击的效果,但是却不能造成双击的效果
    注2: 自定义函数不要使用click(),这是保留函数名。

    <input type="button" onclick="singleClick()" ondblclick="doubleClick()"  value="用于演示单击和双击" >
     
    <br>
    <br>
    <div id="message"></div>
      
    <script>
    function singleClick(){
    document.getElementById("message").innerHTML="单击按钮";
    }
      
    function doubleClick(){
     
    document.getElementById("message").innerHTML="双击按钮";
    }
    </script>

    3.3 提交事件

    <form action="/study/login.jsp" onsubmit="login()">
    账号:<input type="text" name="name"> <br/>
    密码:<input type="password" name="password" > <br/>
    <input type="submit" value="登录">
    </form>
     <script>
      function login(){
          alert("提交表单");
      }
    </script>
    双击选中所有代码
    试一下
  • 相关阅读:
    DGA域名可以是色情网站域名
    使用cloudflare加速你的网站隐藏你的网站IP
    167. Two Sum II
    leetcode 563. Binary Tree Tilt
    python 多线程
    leetcode 404. Sum of Left Leaves
    leetcode 100. Same Tree
    leetcode 383. Ransom Note
    leetcode 122. Best Time to Buy and Sell Stock II
    天津Uber优步司机奖励政策(12月28日到12月29日)
  • 原文地址:https://www.cnblogs.com/Smileing/p/11549816.html
Copyright © 2011-2022 走看看