首页 > 编程语言 >JavaWeb(7) DOM编程

JavaWeb(7) DOM编程

时间:2024-07-25 12:53:29浏览次数:14  
标签:编程 JavaWeb DOM 元素 获取 var document 节点 属性

目录

一、什么是DOM编程

二、获取页面元素的API

1.在整个文档范围内查找元素结点

2.在具体元素节点范围内查找子节点

3.查找指定子元素节点的父节点

4.查找指定元素节点的兄弟节点

5 .整体代码演示

三、操作元素属性值API

1.属性操作

2.内部文本操作

3 .整体代码演示

 四、增删元素API

1.对页面的元素进行增删操作

2.整体代码演示

总结


一、什么是DOM编程

  • 简单来说:DOM(Document Object Model)编程就是使用document对象的API完成对网页HTML文档进行动态修改,以实现网页数据和样式动态变化效果的编程。
  • document对象代表整个html文档,可用来访问页面中的所有元素,是最复杂的一个dom对象,可以说是学习好dom编程的关键所在。

  • 根据HTML代码结构特点,document对象本身是一种树形结构的文档对象。

dom树中节点的类型

  • node 节点,所有结点的父类型

    • element 元素节点,node的子类型之一,代表一个完整标签

    • attribute 属性节点,node的子类型之一,代表元素的属性

    • text 文本节点,node的子类型之一,代表双标签中间的文本


二、获取页面元素的API

1.在整个文档范围内查找元素结点

功能API返回值
根据id值查询document.getElementById(“id值”)一个具体的元素节
根据标签名查询document.getElementsByTagName(“标签名”)元素节点数组
根据name属性值查询document.getElementsByName(“name值”)元素节点数组
根据类名查询document.getElementsByClassName("类名")元素节点数组

2.在具体元素节点范围内查找子节点

功能API返回值
查找子标签element.children返回子标签数组
查找第一个子标签element.firstElementChild标签对象
查找最后一个子标签element.lastElementChild节点对象

3.查找指定子元素节点的父节点

功能API返回值
查找指定元素节点的父标签element.parentElement标签对象

4.查找指定元素节点的兄弟节点

功能API返回值
查找前一个兄弟标签node.previousElementSibling标签对象
查找后一个兄弟标签node.nextElementSibling标签对象

5 .整体代码演示


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
   <script>
    /* 
    1 获得document  dom树
        window.document
    2 从document中获取要操作的元素
        1. 直接获取
            var el1 =document.getElementById("username") // 根据元素的id值获取页面上唯一的一个元素
            var els =document.getElementsByTagName("input") // 根据元素的标签名获取多个同名元素
            var els =document.getElementsByName("aaa") // 根据元素的name属性值获得多个元素
            var els =document.getElementsByClassName("a") // 根据元素的class属性值获得多个元素
        2. 间接获取
            var cs=div01.children // 通过父元素获取全部的子元素
            var firstChild =div01.firstElementChild  // 通过父元素获取第一个子元素
            var lastChild = div01.lastElementChild   // 通过父元素获取最后一个子元素
            var parent = pinput.parentElement  // 通过子元素获取父元素
            var pElement = pinput.previousElementSibling // 获取前面的第一个元素
            var nElement = pinput.nextElementSibling // 获取后面的第一个元素
    3 对元素进行操作
        1. 操作元素的属性
        2. 操作元素的样式
        3. 操作元素的文本
        4. 增删元素   
    */
   function fun1(){
        //1 获得document
        //2 通过document获得元素
        var el1 =document.getElementById("username") // 根据元素的id值获取页面上唯一的一个元素
        console.log(el1)
   }
   function fun2(){
        var els =document.getElementsByTagName("input") // 根据元素的标签名获取多个同名元素
        for(var i = 0 ;i<els.length;i++){
            console.log(els[i])
        }
   }
   function fun3(){
        var els =document.getElementsByName("aaa") // 根据元素的name属性值获得多个元素
        console.log(els)
        for(var i =0;i< els.length;i++){
            console.log(els[i])
        }
   }

   function fun4(){
    var els =document.getElementsByClassName("a") // 根据元素的class属性值获得多个元素
    for(var i =0;i< els.length;i++){
            console.log(els[i])
        }
   }

   function fun5(){
    // 先获取父元素
     var div01 = document.getElementById("div01")
     // 获取所有子元素
     var cs=div01.children // 通过父元素获取全部的子元素
     for(var i =0;i< cs.length;i++){
            console.log(cs[i])
     }

     console.log(div01.firstElementChild)  // 通过父元素获取第一个子元素
     console.log(div01.lastElementChild)   // 通过父元素获取最后一个子元素
   }

   function fun6(){
        // 获取子元素
        var pinput =document.getElementById("password")
        console.log(pinput.parentElement) // 通过子元素获取父元素
   }

   function fun7(){
        // 获取子元素
        var pinput =document.getElementById("password")
        console.log(pinput.previousElementSibling) // 获取前面的第一个元素
        console.log(pinput.nextElementSibling) // 获取后面的第一个元素
   }
   </script>
</head>
<body>
    <div id="div01">
        <input type="text" class="a" id="username" name="aaa"/>
        <input type="text" class="b" id="password" name="aaa"/>
        <input type="text" class="a" id="email"/>
        <input type="text" class="b" id="address"/>
    </div>
    <input type="text" class="a"/><br>

    <hr>
    <input type="button" value="通过父元素获取子元素" onclick="fun5()" id="btn05"/>
    <input type="button" value="通过子元素获取父元素" onclick="fun6()" id="btn06"/>
    <input type="button" value="通过当前元素获取兄弟元素" onclick="fun7()" id="btn07"/>
    <hr>

    <input type="button" value="根据id获取指定元素" onclick="fun1()" id="btn01"/>
    <input type="button" value="根据标签名获取多个元素" onclick="fun2()" id="btn02"/>
    <input type="button" value="根据name属性值获取多个元素" onclick="fun3()" id="btn03"/>
    <input type="button" value="根据class属性值获得多个元素" onclick="fun4()" id="btn04"/>
    
</body>
</html>


三、操作元素属性值API

1.属性操作

需求操作方式
读取属性值元素对象.属性名
修改属性值元素对象.属性名=新的属性值

2.内部文本操作

需求操作方式
获取或者设置标签体的文本内容element.innerText
获取或者设置标签体的内容element.innerHTML

3 .整体代码演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <script>
         /* 
    1 获得document  dom树
        window.document
    2 从document中获取要操作的元素
        1. 直接获取
            var el1 =document.getElementById("username") // 根据元素的id值获取页面上唯一的一个元素
            var els =document.getElementsByTagName("input") // 根据元素的标签名获取多个同名元素
            var els =document.getElementsByName("aaa") // 根据元素的name属性值获得多个元素
            var els =document.getElementsByClassName("a") // 根据元素的class属性值获得多个元素
        2. 间接获取
            var cs=div01.children // 通过父元素获取全部的子元素
            var firstChild =div01.firstElementChild  // 通过父元素获取第一个子元素
            var lastChild = div01.lastElementChild   // 通过父元素获取最后一个子元素
            var parent = pinput.parentElement  // 通过子元素获取父元素
            var pElement = pinput.previousElementSibling // 获取前面的第一个元素
            var nElement = pinput.nextElementSibling // 获取后面的第一个元素
    3 对元素进行操作
        1. 操作元素的属性   元素名.属性名=""
        2. 操作元素的样式   元素名.style.样式名=""  样式名"-" 要进行驼峰转换
        3. 操作元素的文本   元素名.innerText   只识别文本
                           元素名.innerHTML   同时可以识别html代码 
        4. 增删元素   
    */

    function changeAttribute(){
        var in1 = document.getElementById("in1")
        //语法 元素.属性名 = ""
        //获得属性值
        console.log(in1.type)
        console.log(in1.value)
        //修改属性值
        in1.type="button"
        in1.value="嗨"
    }
    function changeStyle(){
        var in1 = document.getElementById("in1")
        //语法 元素.style.样式名=""     原始样式名中的“-”要转换为驼峰式,background-color ->backgroundColor
        in1.style.color="green"
        in1.style.borderRadius="100px"
    }
    function changeText(){
        var div01 = document.getElementById("div01")
        /* 
        语法    元素名.innerText  只识别文本
                元素名.innerHTML  同时可以识别HTML代码
        */
       console.log(div01.innerText)
       div01.innerText="嗨"
       div01.innerHTML="<h1>嗨</h1>"
    }
    </script>

    <style>
        #in1{
            color: blueviolet;
        }
    </style>
</head>
<body>
    <div id="div01" type="text" value="hello">

    </div>
    <input id="in1" type="text" value="hello">


    <hr>
    <button onclick="changeAttribute()">操作属性</button>
    <button onclick="changeStyle()">操作样式</button>
    <button onclick="changeText()">操作文本</button>
</body>
</html>

 四、增删元素API

1.对页面的元素进行增删操作

API功能
document.createElement(“标签名”)创建元素节点并返回,但不会自动添加到文档中
document.createTextNode(“文本值”)创建文本节点并返回,但不会自动添加到文档中
element.appendChild(ele)将ele添加到element所有子节点后面
parentEle.insertBefore(newEle,targetEle)将newEle插入到targetEle前面
parentEle.replaceChild(newEle, oldEle)用新节点替换原有的旧子节点
element.remove()删除某个标签

2.整体代码演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <script>
        /* 
   1 获得document  dom树
       window.document
   2 从document中获取要操作的元素
       1. 直接获取
           var el1 =document.getElementById("username") // 根据元素的id值获取页面上唯一的一个元素
           var els =document.getElementsByTagName("input") // 根据元素的标签名获取多个同名元素
           var els =document.getElementsByName("aaa") // 根据元素的name属性值获得多个元素
           var els =document.getElementsByClassName("a") // 根据元素的class属性值获得多个元素
       2. 间接获取
           var cs=div01.children // 通过父元素获取全部的子元素
           var firstChild =div01.firstElementChild  // 通过父元素获取第一个子元素
           var lastChild = div01.lastElementChild   // 通过父元素获取最后一个子元素
           var parent = pinput.parentElement  // 通过子元素获取父元素
           var pElement = pinput.previousElementSibling // 获取前面的第一个元素
           var nElement = pinput.nextElementSibling // 获取后面的第一个元素
   3 对元素进行操作
       1. 操作元素的属性   元素名.属性名=""
       2. 操作元素的样式   元素名.style.样式名=""  样式名"-" 要进行驼峰转换
       3. 操作元素的文本   元素名.innerText   只识别文本
                          元素名.innerHTML   同时可以识别html代码 
       4. 增删元素
            var element =document.createElement("元素名") // 创建元素
            父元素.appendChild(子元素)               // 在父元素中追加子元素
            父元素.insertBefore(新元素,参照元素)     // 在某个元素前增加元素
            父元素.replaceChild(新元素,被替换的元素) // 用新的元素替换某个子子元素
            元素.remove()                            // 删除当前元素
        
   */

   function addSy(){
        //创建一个新的元素
        var syli = document.createElement("li") //<li></li>
        //设置子元素的属性和文本
        syli.id="sy"
        syli.innerText="沈阳"
        //将子元素放入父元素中
        var cityul = document.getElementById("city")
        //再父元素中追加子元素
        cityul.appendChild(syli)
   }
   function addHebBeforeSz(){
        //创建一个新的元素
        var hebli = document.createElement("li") //<li></li>
        //设置子元素的属性和文本
        hebli.id="heb"
        hebli.innerText="哈尔滨"
        //将子元素放入父元素中
        var cityul = document.getElementById("city")
        //再父元素中追加子元素
        //cityul.insertBefore(新元素,参照元素)
        var szli = document.getElementById("sz")
        cityul.insertBefore(hebli,szli)
   }
   function replaceSzToCc(){
        //创建一个新的元素
        var ccli = document.createElement("li") //<li></li>
        //设置子元素的属性和文本
        ccli.id="cc"
        ccli.innerText="长春"
        //将子元素放入父元素中
        var cityul = document.getElementById("city")
        //再父元素中追加子元素
        //cityul.replaceChild(新元素,被替换元素)
        var szli = document.getElementById("sz")
        cityul.replaceChild(ccli,szli)
   }
   function replaceSzToCc(){
        //创建一个新的元素
        var ccli = document.createElement("li") //<li></li>
        //设置子元素的属性和文本
        ccli.id="cc"
        ccli.innerText="长春"
        //将子元素放入父元素中
        var cityul = document.getElementById("city")
        //再父元素中追加子元素
        //cityul.replaceChild(新元素,被替换元素)
        var szli = document.getElementById("sz")
        cityul.replaceChild(ccli,szli)
   }
   function removeSz(){
        var szli = document.getElementById("sz") //<li></li>
        //哪个元素调用remove该元素就会在DOM树中被移除
        szli.remove()
   }
   function clearCity(){
        var cityul = document.getElementById("city")

        //建议,删除的是ul中的内容(用for会改变索引,比较困难)
        /* var fc = cityul.firstChild
        while(fc != null){
            fc.remove
            fc = cityul.firstChild
        } */
        // cityul.innerHTML=""

        //不建议,删除的是整个ul结构
        cityul.remove
   }
  </script>

</head>
<body>
    <ul id="city">
        <li id="bj">北京</li>
        <li id="sh">上海</li>
        <li id="sz">深圳</li>
        <li id="gz">广州</li>

    </ul>


    <hr>
        <!-- 目标1 在城市列表的最后添加一个子标签 -->
        <button onclick="addSy()">增加沈阳</button>
        <!-- 目标2 在城市列表的深圳前添加一个子标签 -->
        <button onclick="addHebBeforeSz()">增加哈尔滨</button>
        <!-- 目标3 将城市列表的深圳替换为长春 -->
        <button onclick="replaceSzToCc()">替换深圳为长春</button>
        <!-- 目标4 将城市列表的深圳删除深圳 -->
        <button onclick="removeSz()">删除深圳</button>
        <!-- 目标5 清空城市列表 -->
        <button onclick="clearCity()">清空</button>
</body>
</html>

总结

        本篇对DOM编程进行了讲解和演示,便于学习和理解。部分内容源自网络,如有侵权,请联系作者删除处理,谢谢!

标签:编程,JavaWeb,DOM,元素,获取,var,document,节点,属性
From: https://blog.csdn.net/Theodore_1022/article/details/140686666

相关文章

  • 油管视频《编程思维》中的题目,使用C语言编写出来,第二集,反抗
    题目,假设要在人群中找一位领袖,领袖的相关信息有,他的眼睛是绿色的,如果他长着红头发,名字至少两个连续字母相同,如果戴眼镜的话,名字中有且仅有2个元音,否则名字中会有三个元音,只有一人附和以上条件,请下达指令涉及编程的基础原理1,结构体的使用,用于存储每个人的信息2,字符串的处理,......
  • 油管视频《编程思维》中的题目,使用C语言编写出来,第三集,炉膛机器人
    题目:假设起初只有一个机器人,他的炉膛里有一个数字0,和另一个未知的任意生成的编码,随着推移,原始机器人自我复制,制造出更多一样的炉膛机器人,被原始机器人自我复制制造出的每一个子机器人的熔炉内,都继承了原始机器人未知的编码,并且有一个属于自己,独一无二的编码刻在外壳,第二代炉膛......
  • Java编程指南:高级技巧解析 - Excel单元格样式的编程设置
    最新技术资源(建议收藏)https://www.grapecity.com.cn/resources/前言在Java开发中,处理Excel文件是一项常见的任务。在处理Excel文件时,经常需要对单元格进行样式设置,以满足特定的需求和美化要求,通过使用Java中的相关库和API,我们可以轻松地操作Excel文件并设置单元格的样式。在......
  • 学了十几种编程语言后,我终于悟了!
    大家好,我是程序员鱼皮。16~24年,算下来我学编程8年多了,这期间我学过十几种编程语言,比如C、C++、Java、Python、JavaScript、Go、PHP、C#、SQL、Scala等。这么一看,目前排名前10的语言除了Fortran没接触过外,别的语言或多或少都写过点儿东西。VisualBasic是高中考计......
  • C语言面向对象风格编程解惑-全局变量性能分析
    C语言面向对象风格编程解惑-全局变量性能分析如果你是CPP老手,但在软件开发过程中要求采用C语言作为主要语言,首先遇到的是各种设计模式不方便应用了,感到非常困扰,然后就是认命之后走向另外一个极端,常常会有过度使用全局变量和goto语句的问题。CPP既然是CWithClass,自然不会排斥面......
  • @Slf4j注解 - javaweb日志记录
    1.引言在现代的JavaWeb开发中,日志记录是一个非常重要的组成部分。良好的日志记录可以帮助开发者快速定位问题、监控系统运行状态以及进行性能调优。@Slf4j注解是Lombok库提供的一个便捷工具,用于简化日志记录的代码编写。本文将详细讲解@Slf4j注解的相关内容,包括其概念、......
  • 【React】箭头函数:现代 JavaScript 的高效编程方式
    文章目录一、箭头函数的基本语法二、箭头函数的特性三、在React中的常见用法四、最佳实践在现代JavaScript中,箭头函数(ArrowFunctions)是一种简洁的函数表达方式,并且在React开发中非常常见。箭头函数不仅简化了函数的语法,还带来了与普通函数不同的行为特性。本......
  • JS笔记第六期(DOM练习)-使用JS实现用户添加删除
    要实现的界面为:界面的CSS样式:*{ margin:0auto;}th,td{ width:200px; height:50px; text-align:center; font-size:20px;}.tBox{ border:#0000001pxsolid; width:450px; height:250px; margin:0auto; padding:10px; }JS+HTML:<!DOCTYP......
  • 【 Pro*C/C++ 】 Pro*C/C++ 编程
    ProC/C++编程1一、ProC/C++简介11.1、ProC/C++是什么11.2、ProC/C++处理流程2二、ProC/C++GCC环境配置32.1、ProC/C++预编译环境32.2、GCC编译器5三、开始编写第一个ProC++代码53.1、第一个ProC++代码53.2、ProC++代码预编译63.3、GCC编译73......
  • javaWeb_JSP
    首先要对项目的pom.xml进行添加依赖点击查看代码<dependencies><!--Servlet依赖--><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version>&l......