zoukankan      html  css  js  c++  java
  • javascript基础:dom

    Dom:

      * 概念:Document Object  Model    文档对象模型

        * 将标记语言文档的各个组成部分,封装成对象,可以使用这些对象,对标记语言文档进行CRUD的动态操作

        *    Dom将HTML文档表达成树结构

      * W3C   Dom 标准被分为  3 个不同的部分:

        *  核心  Dom - 针对任何结构化文档的标准模型

          *  Document:文档对象

          *  Element:元素对象

          *  Attribute:属性对象

          *  Text:文本对象

          *  Comment:注释对象

    --------------------------------------------------------------------

          *  Node:节点对象,其他5个的父对象

        *  XML  Dom - 针对  XML  文档的标准模型

        *  HTML  Dom - 针对  HTML  文档的标准模型


    一、核心DOM模型:

      *  Document:文档对象

        1、创建(获取):在html dom模型中可以使用window对象获取

          1、window.document

          2、document

        2、方法:

          1、获取Element对象:

            1、getElementById():根据id属性值来获取元素对象,id属性值一般唯一

            2、getElementsByTagName():根据元素名称获取元素对象们,返回值是一个数组

            3、getElementsByClassName():根据Class属性值获取元素对象们,返回值是一个数组

            4、getElementsByName():根据name属性值来获取元素对象们,返回值是一个数组

        <div id="div1">div1</div>
        <div id="div2">div2</div>
        <div id="div3">div3</div>
    
        <div class="cls4">div4</div>
        <div class="cls5">div5</div>
    
        <input type="text" name="username">
    
        <script>
    
            //1、getElementById():根据id属性值来获取元素对象,id属性值一般唯一
            var div = document.getElementById("div1")
    
            //2、getElementsByTagName():根据元素名称获取元素对象们,返回值是一个数组
            var divs = document.getElementsByTagName("div")
            // alert(divs.length)
    
            //3、getElementsByClassName():根据Class属性值获取元素对象们,返回值是一个数组 
            var div_cls =  document.getElementsByClassName("cls5")
            alert(div_cls.length)
    
            //4、getElementsByName():根据name属性值来获取元素对象们,返回值是一个数组
            var ele_username = document.getElementsByName("username")
            alert(ele_username.length)
    
        </script>

          2、创建其他DOM对象:

            *  createAttribute(name) 

            *  createComment()

            *  createElement()

            *  createTextNode()                

        3、属性:

      *  Element:元素对象

         1、 获取/创建:通过document来获取和创建

         2、 方法:

            1、removeAttribute():删除属性

            2、setAttribute():设置属性

        <a>点我点我</a>
        <input type="button" value="设置属性" id="btn_set">
        <input type="button" value="删除属性" id="btn_remove">
    
        <script>
    
            //获取btn
            var btn_set = document.getElementById("btn_set");
            btn_set.onclick = function () {
                //1.获取a标签
                var element_a = document.getElementsByTagName("a")[0];
    
                element_a.setAttribute("href", "https://www.baidu.com")
            }
    
             //获取btn
            var btn_remove = document.getElementById("btn_remove");
            btn_remove.onclick = function () {
                //1.获取a标签
                var element_a = document.getElementsByTagName("a")[0];
    
                element_a.removeAttribute("href", "https://www.baidu.com")
            }
          </script>

      *  Node:节点对象,其他5个的父对象(节点对象代表文档数中的一个节点)

        * 特点:所有dom对象都可以被认为是一个节点

        * 方法:

          *  CRUD  dom数:

            *  appendChild():向节点的子节点列表的结尾添加新的子节点

            *  removeChild():删除(并返回)当前节点的指定子节点

            *  replaceChild():用新节点替换一个子节点

        *  属性:

          *  parentNode  返回节点的父节点

        <style>
            div{
    
                border: 1px solid black;
            }
    
            #div1{
                 200px;
                height: 200px;
            }
    
            #div2{
                 100px;
                height: 100px;
            }
    
            #div2{
                 50px;
                height: 50px;
            }
        </style>
    </head>
    <body>
    
        <div id="div1">
            <div id="div2">div2</div>
           div1
        </div>
        <a href="javascript:void(0)" id="del">删除子节点</a>
        <a href="javascript:void(0)" id="add">添加子节点</a>
        <!-- <input type="button" value="删除子节点" id="del"> -->
        <script>
            //1、获取超链接
            var element_a = document.getElementById("del");
            //2、绑定单击事件
            element_a.onclick = function(){
                var div1 = document.getElementById("div1");
                var div2 = document.getElementById("div2");
                div1.removeChild(div2)
    
            }
    
            /*
                超链接功能:
                    1、可以被点击:样式
                    2、点击后跳转href指定的url
    
                需求:保留1功能,去掉2功能
                    实现:href="javascript:void(0)"
            */
    
             //1、获取超链接
             var element_add = document.getElementById("add");
            //2、绑定单击事件
            element_add.onclick = function(){
                var div1 = document.getElementById("div1");
                //给div1添加子节点
                //创建div节点
                var div3 = document.createElement("div");
                div3.setAttribute("id","div3");
                div1.appendChild(div3);
    
            }
    
            var div2 = document.getElementById("div2")
            var div1 = div2.parentNode
            alert(div1)
            
        </script>
        
    </body>

    二、HTML DOM

      1、标签体的设置和获取:innerHTML

      2、使用html元素对象的属性

      3、控制样式

        1、使用元素的style属性来设置,如:

        <div id="div1">
    
            div
        </div>
    
        <script>
            var div1 = document.getElementById("div1");
            div1.onclick = function(){
                //修改样式方式1
                div1.style.border = "1px solid red";
    
                div1.style.width = "200px";
    
                //font-size --> fontSize 
                div1.style.fontSize = "20px";
    
            }
        </script>

        2、提前定义好类选择器的样式,通过元素的className属性来设置class属性值

            //修改方式2
            //className
            var div2 = document.getElementById("div2");
            div2.onclick = function(){
                div2.className = "d2"
            }
  • 相关阅读:
    css 渐变动画
    div 画园
    sql server中使用xp_cmdshell
    (0.2.3)Mysql安装——二进制安装
    (0.2.2)如何下载mysql数据库(二进制、RPM、源码、YUM源)
    (0.2.1)mysql数据库环境-操作系统配置
    (0.2)linux下Mysql的安装配置与管理入门(目录篇)
    行列转换之——多行转多列,多列转多行实践版
    sql server数据库状态监控
    【bat】bat批处理异备文件、压缩文件(net use)
  • 原文地址:https://www.cnblogs.com/flypig666/p/11603005.html
Copyright © 2011-2022 走看看