DOM操作和事件监听综合练习 (具备三种功能的轮播图案例)

 学习了DOM操作和事件监听后,我们来做一下综合练习

做出和下图一样的轮播效果:

屏幕录制 2024-11-10 232757

 初始代码

<style>  /* 设置文档和主体的宽高和内外边距 */body, html {  margin: 0;  padding: 0; width: 100%; height: 100%;  }  /* 承载轮播照片的父盒宽高及样式 */.carousel-container {  position: relative;  width: 30%;  height: 45%; /* 根据需要设置高度 */ border: 4px red solid;border-radius: 40px;background-color: gray;}  .carousel-image{border-radius: 40px;}/* 设置承载按键父盒的宽高 */.carousel-image {  width: 100%;  height: 100%;  }  </style>  
</head>  <body>  
//要求:// 【实现自动轮播】// 【实现四个按钮切换图片】// 【实现回车键控制轮播是否开启】    <div class="carousel-container">  <img src="./img_src/p1.jpg" class="carousel-image" id="img1">  </div> <div class="clear_ele change-image"><p class="button"  id="p1">第1张</p><p class="button"  id="p2">第2张</p><p class="button"  id="p3">第3张</p><p class="button"  id="p4">第4张</p>   </div><script></script></body>  

一.实现图片自动轮播效果

通过 if  语句来对图片进行自动轮播的效果,

当num>循环照片数时,需要从1开始再次循环;

当num<=循环照片数时,我们只需要使循环的照片路径进行改变即可;

就这样一个无限循环轮播效果就出来了

<script>//获取id节点const imgElement1=document.getElementById("img1");         //初始数var num=1;        function showNextImage1() {   
//当num大于4时,设置num再次等于1,就这样一直在1到4之间循环if(num>4){      num = 1;  
//如果num小于4,那么就一直循环,                  }else{             
//图片路径更改,当num=1时,图片路径为p1;num=2时,图片路径为p2依此类推imgElement1.src = `./img_src/p${num}.jpg`;
//计时器,用于循环num =  num + 1;             } }  
// 图片切换的时间间隔,这里为每1秒切换一次图片 (无限循环)setInterval(showNextImage1, 1500);  </script>

屏幕录制 2024-11-10 193345

二.实现四个按钮切换图片

通过获取节点,监听鼠标事件来实现按钮切换图片。

方法一.通过获取id节点来实现:

//获取节点
const img_1=document.getElementById("p1");
//鼠标监听img_1.addEventListener("click",function(){                //函数来执行事件imgElement1.src=`./img_src/p1.jpg`;})const img_2=document.getElementById("p2");img_2.addEventListener("click",function(){imgElement1.src=`./img_src/p2.jpg`;})const img_3=document.getElementById("p3");img_3.addEventListener("click",function(){imgElement1.src=`./img_src/p3.jpg`;})const img_4=document.getElementById("p4");img_4.addEventListener("click",function(){imgElement1.src=`./img_src/p4.jpg`;})

方法二.通过获取标签节点来实现:

const p=document.getElementsByTagName("p");const p=document.getElementsByTagName("p");p[0].addEventListener("click",function(){num=1;imgElement1.src=`./img_src/p${num}.jpg`;})p[1].addEventListener("click",function(){num=2;imgElement1.src=`./img_src/p${num}.jpg`;})p[2].addEventListener("click",function(){num=3;imgElement1.src=`./img_src/p${num}.jpg`;})p[3].addEventListener("click",function(){num=4;imgElement1.src=`./img_src/p${num}.jpg`;})

屏幕录制 2024-11-10 205546

三. 实现回车键控制轮播是否开启

前面我们实现了图片自动轮播效果,现在我们要通过  "enter" 键来控制轮播的开关,所以我们要停止前面的自动轮播,将主动权给"enter"键。

首先要对图片自动轮播源代码进行改动,再将轮播的控制权交给enter 按键。

<style> 
//图片轮播按钮样式设置
#output{width: 23%;height: 6%;background-color: rgb(253, 244, 81);border: 2px rgb(87, 79, 79) solid;text-align: center;border-radius: 30px;margin-top: 4%;margin-left: 4%;}
//防止父盒塌陷.clear_ele::after{content: "";  /* 这个伪元素的内容属性必须有 */display: block;/* border: 6px purple dashed; */clear: both;}
</style>  <body>
<div id="output">图片轮播关闭......(按Enter键开启轮播)</div>
<script>
//图片自动轮播的控制const imgElement1=document.getElementById("img1"); var num=1;     var scroll_img = false;     //设置图片自动播放function showNextImage1() {  //如果按下"enter"键,那么图片轮播就如以下循环播放;如果没有按下enter键,那么图片轮播关闭if(scroll_img){ if(num>4){     num = 1;                    }else{           imgElement1.src = `./img_src/p${num}.jpg`;num =  num + 1; } }  }// 图片切换的时间间隔,这里为每1秒切换一次图片 (无限循环)setInterval(showNextImage1, 1500);  //实现回车键控制轮播是否开启//获取节点
const a=document.getElementById(`output`);
//监听整个文档的keydown事件document.addEventListener(`keydown`,function(event){const keyCode=event.key;if(keyCode==="Enter"){//当按下enter键,那么图片轮播由关闭变成开启scroll_img=!scroll_img;}//以下是图片轮播开关的样式改变if(scroll_img){a.textContent = "图片轮播开启......(按Enter键关闭轮播)";a.style.backgroundColor = "green";}else{a.textContent = "图片轮播关闭......(按Enter键开启轮播)";a.style.backgroundColor = "red";}});</script></body>  

屏幕录制 2024-11-10 230621

 轮播图完整代码

<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>图片自动切换(轮播图效果)</title>  <style>  /* 设置文档和主体的宽高和内外边距 */body, html {  margin: 0;  padding: 0; width: 100%; height: 100%;  }  /* 承载轮播照片的父盒宽高及样式 */.carousel-container {  position: relative;  width: 30%;  height: 45%; /* 根据需要设置高度 */ border: 4px red solid;border-radius: 40px;background-color: gray;}  .carousel-image{border-radius: 40px;}/* 设置承载按键父盒的宽高 */.carousel-image {  width: 100%;  height: 100%;  } .change-image .button{width: 5%;height: 10%;margin-left: 2%;background-color: yellow;border: 2px rgb(241, 241, 47) solid;border-radius: 30px;text-align: center;float: left;}#output{width: 23%;height: 6%;background-color: rgb(253, 244, 81);border: 2px rgb(87, 79, 79) solid;text-align: center;border-radius: 30px;margin-top: 4%;margin-left: 4%;}.clear_ele::after{content: "";  /* 这个伪元素的内容属性必须有 */display: block;/* border: 6px purple dashed; */clear: both;}</style>  
</head>  <body>  <div class="carousel-container">  <img src="./img_src/p1.jpg" class="carousel-image" id="img1">  </div> <div class="clear_ele change-image"><p class="button"  id="p1">第1张</p><p class="button"  id="p2">第2张</p><p class="button"  id="p3">第3张</p><p class="button"  id="p4">第4张</p>   </div><div id="output">图片轮播关闭......(按Enter键开启轮播)</div><script>// 【实现自动轮播】  const imgElement1=document.getElementById("img1"); var num=1;     var scroll_img = false;function showNextImage1() {  if(scroll_img){ if(num>4){     num = 1;                    }else{           imgElement1.src = `./img_src/p${num}.jpg`;num =  num + 1; } }  }// 图片切换的时间间隔,这里为每1秒切换一次图片 (无限循环)setInterval(showNextImage1, 1500);  // 【实现四个按钮切换图片】const p=document.getElementsByTagName("p");p[0].addEventListener("click",function(){num=1;imgElement1.src=`./img_src/p${num}.jpg`;})p[1].addEventListener("click",function(){num=2;imgElement1.src=`./img_src/p${num}.jpg`;})p[2].addEventListener("click",function(){num=3;imgElement1.src=`./img_src/p${num}.jpg`;})p[3].addEventListener("click",function(){num=4;imgElement1.src=`./img_src/p${num}.jpg`;})// 【实现回车键控制轮播是否开启】const a=document.getElementById(`output`);document.addEventListener(`keydown`,function(event){const keyCode=event.key;if(keyCode==="Enter"){scroll_img=!scroll_img;}if(scroll_img){a.textContent = "图片轮播开启......(按Enter键关闭轮播)";a.style.backgroundColor = "green";}else{a.textContent = "图片轮播关闭......(按Enter键开启轮播)";a.style.backgroundColor = "red";}});</script></body>  
</html>

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

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

相关文章

LeetCode 56.合并区间

思路&#xff1a; 类似于用最少的箭射气球题目&#xff0c;最主要是要处理区间之间是否有重叠&#xff0c;如果无重叠则加入数组&#xff0c;如果有重叠&#xff0c;则需要重新设判断的边界&#xff0c;与下一个区间继续判断。 难点在于 代码用法 需熟练掌握 思想简单&#…

14.UE5爆炸伤害,场景变暗,时间轴

2-16 爆炸伤害&#xff0c;球体监测&#xff0c;场景变暗、时间轴_哔哩哔哩_bilibili 目录 1.UE5的爆炸伤害 ​2.后期盒子实现场景变暗 1.UE5的爆炸伤害 进入流星火雨的发射物蓝图编辑器中 对我们以前的重叠事件进行回顾&#xff0c;并修改使之实现爆炸伤害的效果 这是我们…

现代无线通信接收机架构:超外差、零中频与低中频的比较分析

写在前面&#xff1a;本博客是对三种接收机架构的学习笔记&#xff0c;仅供个人学习记录使用。内容主要是上网查阅的资料&#xff0c;以及个人的一些理解。如有错误的地方请指出&#xff01; 文章目录 一、通信机基本架构1、射频发射级的基本组成及完成功能2、射频接收级的基本…

工业4.0时代下的人工智能新发展

摘要&#xff1a;随着德国工业4.0时代以及中国制造2025的提出&#xff0c;工业智能化的改革的时代正逐渐到来&#xff0c;然而我国整体工业水平仍然处于工业2.0水平。围绕工业4.0中智能工厂、智能生产、智能物流这三大主题&#xff0c;结合国内外研究现状&#xff0c;对人工智能…

[ Linux 命令基础 5 ] Linux 命令详解-网络管理命令

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

计算机课程管理:Spring Boot实现的工程认证解决方案

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于工程教育认证的计算机课程管理平台的开发全过程。通过分析基于工程教育认证的计算机课程管理平台管理的不足&#xff0c;创建了一个计算机管理基于工程教育认…

【eNSP】企业网络架构链路聚合、数据抓包、远程连接访问实验(二)

一、实验目的 网络分段与VLAN划分&#xff1a; 通过实验了解如何将一个大网络划分为多个小的子网&#xff08;VLAN&#xff09;&#xff0c;以提高网络性能和安全性。 VLAN间路由&#xff1a; 学习如何配置VLAN间的路由&#xff0c;使不同VLAN之间能够通信。 网络设备配置&am…

Ubuntu 的 ROS 2 操作系统安装与测试

引言 机器人操作系统&#xff08;ROS, Robot Operating System&#xff09;是一种广泛应用于机器人开发的开源框架&#xff0c;提供了丰富的库和工具&#xff0c;支持开发者快速构建、控制机器人并实现智能功能。 当前&#xff0c;ROS 2 的最新长期支持版本为 Humble Hawksbil…

软件工程笔记一

目录 软件的概念、特性和分类 软件与程序 软件的特性 软件的分类 软件危机与软件工程 软件危机 如何摆脱软件危机? 软件工程概念的提出 什么是软件工程&#xff1f; 软件工程的若干定义 系统工程的目标 软件工程的基本原理 软件工程的目标 软件的质量特性 软件生存…

CEO代码 (CEO Code)

https://caseinterview.com/wp-content/uploads/2015/10/The-CEO-Code-Rules-by-Victor-Cheng.pdf 源自 Victor Cheng CEO们使用一种特殊的语言。这种语言不是英语、西班牙语、普通话或印地语&#xff0c;而是一种置于我们日常语言之上的元语言。 CEO们很快就能识别出谁能说这…

LVGL实现冒泡事件

在LVGL&#xff08;LittlevGL&#xff09;中&#xff0c;事件冒泡是一个重要的概念&#xff0c;它允许事件从一个对象传递到其父对象&#xff0c;直到找到一个能够处理该事件的对象或者达到顶层对象。以下是如何在LVGL中实现和使用事件冒泡的概述&#xff1a; 事件冒泡的理解 …

深入理解计算机系统-信息的表示和处理

2.1 信息存储 大多数计算机使用8位的块&#xff0c;或者字节&#xff0c;作为最小的可寻址的内存单位&#xff0c;而不是访问内存中单独的位。机器级程序将内存视为一个非常大的字节数组&#xff0c;称为虚拟内存。 内存的每个字节都由一个唯一的数字来表示&#xff0c;称为它的…

JAVA-顺序表ArrayList(实现ArrayList)

1.线性表 线性表 &#xff08; linear list &#xff09; 是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直线。…

DCN DCWS-6028神州数码 AC 设备配置笔记

DCN DCWS-6028神州数码 AC 设备配置笔记 一、前期准备 PC 电脑网络配置 目的:使 PC 能够访问 AC 的 web 管理控制台。配置详情:web 管理控制台地址为 192.168.1.10,将 PC 电脑 IP 地址配置在 192.168.1.1 - 192.168.1.254 网段内,如 192.168.1.110,子网掩码 255.255.255.…

树概念及结构

树概念及结构 6.1 树概念及结构6.1.1 树的概念6.1.2 树的术语解读6.1.3 树的表示 6.1 树概念及结构 6.1.1 树的概念 类似八股文一样的东西&#xff0c;需要记一下。 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系…

MySQL主从复制原理

MySQL主从复制是一种异步、基于日志的、单向的数据库复制技术&#xff0c;它通过在主服务器上启用二进制日志&#xff08;binlog&#xff09;并将其发送给一个或多个从服务器&#xff0c;实现了从服务器与主服务器之间的数据同步。以下是MySQL主从复制原理的详细解释&#xff1…

AMD-OLMo:在 AMD Instinct MI250 GPU 上训练的新一代大型语言模型。

AMD-OLMo是一系列10亿参数语言模型&#xff0c;由AMD公司在AMD Instinct MI250 GPU上进行训练&#xff0c;AMD Instinct MI250 GPU是一个功能强大的图形处理器集群&#xff0c;它利用了OLMo这一公司开发的尖端语言模型。AMD 创建 OLMo 是为了突出其 Instinct GPU 在运行 “具有…

Spring Boot框架:构建符合工程认证的计算机课程

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

实现链式结构二叉树

目录 需要实现的操作 链式结构二叉树实现 结点的创建 前序遍历 中序遍历 后序遍历 计算结点个数 计算二叉树的叶子结点个数 计算二叉树第k层结点个数 计算二叉树的深度 查找值为x的结点 销毁 层序遍历 判断是否为完全二叉树 总结 需要实现的操作 //前序遍历 void …

DU模拟器(S5040A Open RAN Studio Player and Capture Appliance)

下行测试过程&#xff0c;由是德科技(https://www.keysight.com/cn/zh/home.html)的DU模拟器&#xff08;S5040A Open RAN Studio Player and Capture Appliance&#xff09;产生标准5G NR下行测试信号&#xff0c;经前传接口发送到小站进行基带处理、中射频、变频后从相控阵天…