DOM案例

news2024/11/15 18:02:45

一.什么是DOM

DOM(Document Object Model)文档对象模型的树形结构   说白了就是用js操作网页

使用方法:

        1.找到对象

        2.操作   操作网页 节点属性 改变网页内容....

文档对象模型就是一个树形结构,类似于家谱树

          html标签里面包裹了所有的文档内容。他是一个**父亲节点(parent)** 它没有父亲节点,也没有兄弟节点,我们称html标签为树根,也就是**根节点**,整个html表示整个文档。

          在html节点内部通常有两个同级节点head和body,html是head的父亲节点,html也是body的父亲节点,他们同一层级并且相互不包含,我们称同属于同一个父亲的节点为**兄弟节点**,而head和body都是html的**子节点**。这样一层一层的关系就是**节点树**。各个标签在页面中都是**元素节点(element node)**

节点(node)的种类

    元素节点(element node)

            文档对象模型中的标签就是最基本的元素节点。它们层层嵌套形参整个页面。内部可能包含了文本和属性

    文本节点(text node)

            我们称DOM内的文本为文本节点。文本节点有的被包含在元素节点中的,比如p标签内部的文字。但是有的元素节点没有文本节点,

    属性节点(attribute node)

            属性节点从属于元素。比如<input type='radio'>其中type='radio'是元素节点p的属性节点。不是所有的元素都有属性节点,但是所有的属性节点都必然属于某一个元素。如:class/id/style

二.通过DOM获取元素的方式

1.document.getElementById //通过ID获取某个元素,所有浏览器兼容

2.document.getElementsByClassName //通过class类名获取,获取是一组,不支持IE8及以下

3.document.getElementsByTagName //通过标签名获取,获取是一组,所有浏览器兼容

4. document.getElementsByName //通过name获取,获取是一组,很少用,所有浏览器兼容

案例

一.实现切换图片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <img src="../../img/1.jpg" alt="" id="pic" width="500" height="500">

    <button id="up">上一张</button>
    <button id="down">下一张</button>

    <script>
        let pic=document.getElementById('pic')
        let up=document.getElementById('up')
        let down=document.getElementById('down')

        let max_pic=5,min_pic=1
        let now_pic=min_pic
        
        //下一张
        down.onclick=function(){
            if(now_pic==max_pic){
                now_pic=min_pic
            }
            else{
                now_pic++
            }
            pic.src=`../../img/${now_pic}.jpg`
        }

        //上一张
        up.onclick=function(){
            if(now_pic==min_pic){
                now_pic=max_pic
            }
            else{
                now_pic--
            }
            pic.src=`../../img/${now_pic}.jpg`
        }
        
    </script>
</body>
</html>

二.鼠标悬浮案例

三.当鼠标移动至小图片时实现切换图片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
   
        *{
            padding: 0;
            margin: 0;
        }
        ul,li{
            list-style: none;

            
        }
        li{
            float: left;
        }
        .smallPic{
            width: 100px;
            height: 100px;
            margin: 5px;
            
        }
        .active{
            border: 3px solid #99008288;
        }
    </style>
</head>
<body>
    
    <img class="bigPic" src="../../img/img5.jpg" alt="" width="500" height="500">
    <ul>
        <li class="active"><img class="smallPic" src="../../img/img5.jpg" alt=""></li>
        <li><img class="smallPic" src="../../img/img6.jpg" alt=""></li>
        <li><img class="smallPic" src="../../img/img7.jpg" alt=""></li>
        <li><img class="smallPic" src="../../img/img8.jpg" alt=""></li>
        <li><img class="smallPic" src="../../img/img9.jpg" alt=""></li>
    </ul>

    <script>
        let bigPic=document.getElementsByClassName('bigPic')[0]
        let smallPic=document.getElementsByClassName('smallPic')

        for(let i=0;i<smallPic.length;i++){
            smallPic[i].onmouseover=function(){

                for(let j=0;j<smallPic.length;j++){
                      smallPic[j].parentNode.className=''
                }

                bigPic.src=this.src
                this.parentNode.className='active'
            } 
        }
    </script>
</body>
</html>

四.定时器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button id="btn">多喝热水</button>

    <script>
       
        let btn=document.getElementById('btn')
        btn.onclick=function(){
            setTimeout(() => {
                alert('干杯')
            }, 1000);
        }


    </script>
</body>
</html>

五.图片自动切换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <img src="../../img/1.jpg" alt="" id="pic" width="500" height="500">

    <button id="up">上一张</button>
    <button id="down">下一张</button>

    <script>
        let pic=document.getElementById('pic')
        let up=document.getElementById('up')
        let down=document.getElementById('down')

        let max_pic=5,min_pic=1
        let now_pic=min_pic
        
        //下一张
        down.onclick=function(){
            if(now_pic==max_pic){
                now_pic=min_pic
            }
            else{
                now_pic++
            }
            pic.src=`../../img/${now_pic}.jpg`
        }

        //上一张
        up.onclick=function(){
            if(now_pic==min_pic){
                now_pic=max_pic
            }
            else{
                now_pic--
            }
            pic.src=`../../img/${now_pic}.jpg`
        }


       

        setInterval(down.onclick,1000)
    </script>

</body>
</html>

六.自动跳转

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        span{
            color: #6cf;
            font-size:30px;
        }
    </style>
</head>
<body>
    <a href="https://www.zol.com.cn/">点击成功 <span>5</span> 秒后跳转到中关村首页</a>

    <script>
        let a =document.getElementsByTagName('a')[0]
        let sec=5

        time=setInterval(function(){
            sec--
            a.innerHTML=`点击成功 <span>${sec}</span> 秒后跳转到中关村首页`
            if(sec==0){
                clearInterval(time)   //关闭触发器
                location.href='https://www.zol.com.cn/' 
                //location对象是用来保存/跳转url 到点自动跳转
            }
        },1000)
    </script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1975786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用了组合式 (Composition) API 后代码变得更乱了,怎么办?

前言 组合式 (Composition) API 的一大特点是“非常灵活”&#xff0c;但也因为非常灵活&#xff0c;每个开发都有自己的想法。加上项目的持续迭代导致我们的代码变得愈发混乱&#xff0c;最终到达无法维护的地步。本文是我这几年使用组合式API的一些经验总结&#xff0c;希望…

【从相邻元素对还原数组】python刷题记录

R3-图篇 饭前一道题 思路&#xff1a; 单向构造 class Solution:def restoreArray(self, adjacentPairs: List[List[int]]) -> List[int]:mnlen(adjacentPairs)#n表示数组元素总数n1#统计dictdefaultdict(int)#存储关系哈希表hashmapdefaultdict(list)for a,b in adjacent…

DeDeCMS漏洞

一.登陆后台 二.文件管理上传shell 我们写一个一句话木马 然后上传 访问他 然后复制网址用工具连接 连接成功 修改模板文件拿shell 找到index.html修改 保存 然后进行下面的操作 访问返回的地址 然后用工具连接 三、后台任意命令执行拿shell 然后写入一个木马 添加成功 点击代…

开源:LLMCompiler高性能工具调用框架

开源&#xff1a;LLMCompiler高性能工具调用框架 LLMCompilerLLMCompiler 框架图任务提取单元使用方式参考链接 LLMCompiler LLMCompiler 是一种 Agent 架构&#xff0c;旨在通过在DAG中快速执行任务来加快 Agent 任务的执行速度。它还通过减少对 LLM 的调用次数来节省 Tokens …

51 华三路由

PC4 路由 能通的区域 MSR2

Vue和React谁更牛逼?看了你就有答案

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏和关注&#xff01;个人知乎、公众号"沐爸空间" 使用 Chrome 浏览器&#xff0c;安装 Vue.js Devtools 和 React Developer Tools 浏览器插件后&#xff0c;打开网站即可知晓当前网站是使用的 Vue 框架还是 …

JCの技巧

当你们私下有矛盾&#xff0c;&#xff08;或者你被J惨了&#xff09;,可以试试以下方法 1.拔电线 优点&#xff1a;快准狠 缺点&#xff1a;看看你身后 2.定时关机 优点&#xff1a;猝不及防 缺点&#xff1a;设置时容易翻车 3.改代码 优点&#xff1a;长代码看不出来…

【数据结构入门 】队列

目录 前言 一、队列的概念及结构 1.概念 2.结构 二、队列的实现 1.队列的声明 2.初始化队列 3.队列的销毁 4.入队 5.出队 6.获取队列有效元素个数 7. 判断队列是否为空 8.获取队首元素 9.获取队尾元素 结论 前言 队列是一种数据结构&#xff0c;它遵循先进先出&#…

数字与位操作——168、670、233、357、400

168. Excel表列名称&#xff08;简单&#xff09; 给你一个整数 columnNumber &#xff0c;返回它在 Excel 表中相对应的列名称。 例如&#xff1a; A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1&#xff1a; 输入&#xff1a;columnNumb…

[NISACTF 2022]ezstack-入土为安的第十四天

签到题吧 checksec pwn 没有保护 进入main函数&#xff0c;点进shell &#xff0c;buf 88808048buf system 08048512 /bin/sh 0804A024 直接让代码溢出调用system和/bin/sh from pwn import *# 连接到远程服务 p remote(node5.anna.nssctf.cn, 20789)# 构造 payload payl…

第三期书生大模型实战营之Llamaindex RAG实践

基础任务 任务要求&#xff1a;基于 LlamaIndex 构建自己的 RAG 知识库&#xff0c;寻找一个问题 A 在使用 LlamaIndex 之前InternLM2-Chat-1.8B模型不会回答&#xff0c;借助 LlamaIndex 后 InternLM2-Chat-1.8B 模型具备回答 A 的能力&#xff0c;截图保存。 streamlit界面…

OS_进程

2024.06.25&#xff1a;操作系统进程学习笔记 第6节 进程 6.1 进程的定义6.2 进程的基本特征&#xff08;动态、并发、独立、异步&#xff09;6.3 机器状态&#xff08;进程可以读取/更新的内容&#xff09;6.3.1 虚拟化技术6.3.2 进程的地址空间&#xff08;虚拟存储器技术要学…

基于OpenCV-Python的彩色图像傅里叶变换

如果用OpenCV-Python进行图像的离散傅里叶变换与逆变换其实还蛮简单的&#xff0c;流程就是上图所示&#xff0c;值得注意的是&#xff0c;如果是多通道的图像&#xff0c;譬如多光谱、高光谱图像&#xff0c;需要对每个通道都进行傅里叶变换&#xff0c;最后再聚合&#xff0c…

数字乡村 | 是什么、建什么、怎么建?附200份详尽解决方案下载

数字乡村是什么 如何将数字乡村建设与全面实施乡村振兴战略有效衔接&#xff0c;已成为当前农业农村工作的重要课题。 200份资料下载方式&#xff0c;请看每张图片右下角信息 数字乡村作为一种新的乡村社会发展形态&#xff0c;是当今第四次工业革命工业互联网 生态系统的持…

如何在Java中调用数学中的log函数

在Java中&#xff0c;调用数学中的对数&#xff08;log&#xff09;函数通常是通过Math类来实现的。Math类提供了多种对数函数的实现&#xff0c;但最常用的是自然对数&#xff08;底数为e的对数&#xff09;和以10为底的对数。 自然对数&#xff08;底数为e&#xff09; 使用…

深度学习之参数初始化问题

参数初始化 1、 参数初始化可以减缓梯度爆炸和梯度消失问题 2、tanh一般使用Xavier初始化方法 3、Relu及其变种使用Kaiming初始化方法 V a r ( X ) E ( X 2 ) − E ( X ) 2 V a r ( X Y ) V a r ( X ) V a r ( Y ) , 当 X 和 Y 互相独立 V a r ( X Y ) V a r ( X ) V a r…

【机器学习基础】Scikit-learn主要用法

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

C语言 ——— 学习、使用 strstr函数 并模拟实现

目录 strstr函数的功能 学习strstr函数​编辑 使用strstr函数 模拟实现strstr函数 strstr函数的功能 在字符串 str1 中找 str2 字符串&#xff0c;如果在 str1 字符串中找到了 str2 字符串&#xff0c;就返回 str1 中找到的 dtr2 的地址&#xff0c;没找到的话就返回 NU…

[CR]厚云填补_MSDA-CR

Cloud Removal in Optical Remote Sensing Imagery Using Multiscale Distortion-Aware Networks Abstract 云层污染是光学遥感图像中常见的问题。基于深度学习的遥感图像去云技术近年来受到越来越多的关注。然而&#xff0c;由于缺乏对云失真效果的有效建模和网络较弱的特征表…

EasyMR如何为服务开启Kerberos

作者&#xff1a;雅泽 一、Hadoop为什么需要安全 最早部署Hadoop集群时并没有考虑安全问题&#xff0c;未开启安全认证时&#xff0c;Hadoop 是以客户端提供的用户名作为用户凭证&#xff0c; 一般即是发起任务的Unix 用户。一般线上机器部署服务会采用统一账号&#xff0c;当…