html、css、js入门-15-js基础6:JS的document对象与DOM

JS DOM操作较为复杂,但必须理解原理,后期可使用封装过的JQuery进行封装

document 对象

    每个载入浏览器的HTML文档都会成为 document对象

    通过使用 document 对象,可以从脚本中对HTML页面中的所有元素进行访问。

        document对象是Windom对象的一部分,可通过window.document 属性对其进行访问

 

 

DOM 概述

    DOM (Document Object Model):文档对象模型

    HTML 文档中的所有节点组成了一个文档树(或节点树)

       --  数起始于文档节点
       --  document 对象是一棵文档树的根
       --  HTML 文档中的每个元素、属性、文本等都代表着树中的一个节点

 

 


节点信息

     nodeName
         -- 元素节点和属性节点:标签或属性名称
         -- 文本节点:永远是 #text


     innerHTML: 设置或获取位于对象起始和结束标签内的HTML

 


节点属性

     getAttribute()方法:根据属性名称获取属性的值

     将HTML标记、属性和CSS样式都对象化

 

 


根据元素ID查找节点

     .  方法: document.getElementById()

             通过指定的ID来返回元素节点
             忽略文档的结构
             查找整个HTML文档中的任何 HTML元素
             如果ID值错误,则返回 null

    例如:
 
       <p id="p1">一周畅销<span>榜</span></p>


       var o = document.getElementById("p1");

       alert(o.innerHTML);// 一周畅销<span>榜</span>

 

 

修改节点的样式

 .      style 属性
 
             node.style.color
             node.style.fontSize

 .      className 属性

          <p id="p1">一周畅销榜</p>

        
         var o = document.getElementById("p1");      
         o.style.color="red";
         o.style.fontSize=20;
         o.className="样式类名称";

 

 

查找并修改节点

    .       使用 getElementById 方法找到元素节点
         
             --  修改元素内容:innerHTML
             --  修改样式: style 或者 className
             --  修改属性: html 属性

     例如:

        <style>
            h1.style1{
               border-top:1px solid black;
               background-color:silver;
               font-weight:normal;

            }
        </style>


         <h1 id="h1">h1 text</h1>
         <input id="txt1" type="text">


         var o = document.getElementById("txt1");
         o.value="text data"
         o.style.color="gray";


         var o1= document.getElementById("h1");
         h1.innerHTML="new text";
         h1.className="style1";

 


项目案例:

    NetCTOSS -- 表单验证

 

 


取消事件

     onXXX = "return false;"

          -- 用于取消事件

           
   例如:

         <input id="txtID" type="text" />
         <input type="submit" value="Delete" οnclick="return deleteFunc();" />
         <span id="info"></span>


        function deleteFunc(){
           var data = document.getElementById("txtID").value;
           var spanObj=document.getElementById("info");
          
           if(isNaN(data)){
             info.innerHTML="请录入数值。";
             return false;
            }eles{
             return confirm("真的要删除吗?");
            }
            
        }   

 

项目案例:  

  NetCTOSS 验证并提交表单

 

 

根据层次查找节点

    parentNode、firstChild 和 lastChild

        -- 遵循文档的层次结构,查找单个节点
 
    childNodes
 
        -- 遵循文档的层次结构,查找多个节点

         <select id="s1">
             <option value="1">a</option>
             <option value="2">b</option>
             <option value="3">c</option>
         </select>

 

 

根据层次查找节点

        var s1 = document.getElementById("s1");
        alert(s1.childNodes.length);//7???
        var o1 = s1.firstChild;
        alert(o1.innerHTML);//undefined???


       . 若将html 代码修改为如下格式

       <select id="s1"><option
        value="1">a</option><option
        value="2">b</option><option
        value="3">c</option></select>

 


修改购物车

  1.创建购物车页面
  2.修改购物车中的购物数量

 

 

根据标签查找节点

  .    getElementsByTagName():根据指定的标签名称返回所有的元素

          --   忽略文档的结构
          --   查找整个 HTML 文档中的所有元素
          --   如果标签名称错误,则返回长度为0的节点列表

    
  .    返回一个节点列表

          --   使用节点列表的length属性获取个数
          --   [index]:定位具体的元素

 


根据标签查找节点

    例如:

        <body>
            <span>文本1</span>
            <h1>一周畅销<span>榜</span></h1>

        </body>

   
        var spans = document.getElementsByTagName("span");
        alert(spans.lenght);//2
        alert(spans[1].innerHTML);//榜

 


项目案例:

     购物金额计算:
         1.修改购物数量后,计算小计
         2.并计算总计

 


JS中对节点的创建、添加操作、删除操作填补了JQuery的空白
警综平台中的添加单位地址,添加选择条件,都使用到了该知识点

 


创建新节点

     document.createElement(elementName)
         elementName: 要创建的元素标签名称
         返回新创建的节点

    例如:

        var newNode = document.createElement("input");
        newNode.type="text";
        newNode.value="mary";
        newNode.style.color = "red";

 

添加新节点

    .    parentNode.appendChild(newNode)
          --  追加:新节点作为父节点的最后一个子节点存在
 
    .    parentNode.insertBefore(newNode,refNode)

            -- refNode: 参考节点,新节点位于此节点之前

 

 


创建并添加节点:

        例如:
        <body>
           <form id="form1">
              <input id="btn1" type="button" value="添加新节点"
               οnclick="createNewNode();">
           </form>
           
        </body>

      
       function createNewNode(){
          var form = document.getElementById("form1");

          var textNode =document.createElement("input");
          textNode.type="text";
          textNode.value="mary";
          form.appendChild(textNode);

          var h1Node=document.createElement("h1");
          h1Node.innerHTML = "h1 text";
          from.insertBefore(h1Node,document.getElementById("btn1"));
          
       }
 

 


删除节点

     .    parentNode.removeChild(childNode)
           --   删除某个子节点

    例如:

        <input id="btn1" type="button" value="删除节点"
          οnclick="deleteNode();" />
        <a id="a1" href="#">link1</a>

 

         Function deleteNode(){
            var delNode = document.getElementById("a1");
            delNode.parentNode.removeChild(delNode);
         }

 


项目案例:

    联动菜单:实现联动菜单
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕容屠苏

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值