• 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>
    双击选中所有代码
    试一下
  • 相关阅读:
    百万英雄答题值不值得您继续参加
    一个程序员&自媒体人的2017年终总结
    送书福利又来了,总共10本程序员技术书
    CCF 201912-2 回收站选址(100分)Java
    CCF 201912-1 报数 (100分)Java
    CCF 201909-2 小明种苹果(续)(100分)Java
    CCF 201909-1 小明种苹果(100分)Java
    初识JWT
    Redis学习——事务、消息订阅和发布
    Redis学习——数据类型及操作
  • 原文地址:https://www.cnblogs.com/Smileing/p/11549816.html
Copyright © 2020-2023  润新知