JSdemo:点击抽奖,然后展示所有奖品,最后复原抽奖界面(简化版)

2024-04-28 04:08

本文主要是介绍JSdemo:点击抽奖,然后展示所有奖品,最后复原抽奖界面(简化版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

做一个简单的demo,需求如下:

  • 一个ul里有6个小li
  • 点击其中任意一个li,让这个li变红色。
  • 紧接着如果点击了其他小li中的任意一个,点击事件失效,即小li不变红色
  • 1秒后,让所有的li都变红色
  • 再过2秒后,让所有的li都复原成黑色

现在用的电脑上没有装插件,不能快速生成gif图。这次就不传了。


单纯看这个demo,其实没啥技术含量。

这里要介绍的,是一种学习方法和思路。

就是当我遇到一个问题时,不知道如何下笔敲代码,我会把具体的需求进行抽象和简化,然后单独写一个简单的demo进行测试。按照自己的思路把代码写下来,看自己的思路和方法是否符合项目的预期。如果符合,那么这个demo的代码进行优化,然后誊写到项目中。就形成了一个完成的思路。

就比如说这个项目,其实还是有点复杂的,只不过通过抽象和简化,把一个抽奖方案,简化成了一个小的demo。把项目写完后,再根据用户心理,进行反复测试,达到一种预期效果。

下面就简单说说思路和代码。


核心思路:

  • 准备一个空数组arr,把所有li的类名放进去。如果这个数组里有变色的类名了,就不让其他li的点击事件生效了。
  • 做完整个事情后,要清空arr里面的类名。方便下次操作
  • 用递归,可以一直重复流程。

直接上代码。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Demo</title><style>#box {width: 200px;height: 200px;/* background: url('./images/demo.jpg') no-repeat 0 0; */}.changeColor {color: red;}</style>
</head>
<body><div id="box"><ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul></div><script>(function handleChangeColor() {window.addEventListener('load', function() {let ul = document.getElementById('box').getElementsByTagName('ul')[0]let arr = []ul.addEventListener('mouseenter', function(e) {e.target.style.cursor = 'pointer'})// 事件委托ul.addEventListener('click', function(e) {console.log(arr);// 这里用了一个arr数组,// 目的是让当前的类名加入数组,// 再点击其他li的时候,进行判断,如果这个数组里有这个类名了// 就说明已经有个li变红色了,其他li点击就不去变色了。if(!arr.includes('changeColor')) {e.target.className = 'changeColor'arr.push(e.target.className);setTimeout(() => {for(let k of ul.children) {k.className = 'changeColor'}}, 1000)setTimeout(() => {for(let k of ul.children) {k.className = ''}// 完成任务后,要清空arr里的类名// 方便下次继续操作arr = []}, 3000)// 用了递归,可以无限重复操作handleChangeColor()}})})})()</script>
</body>
</html>

这篇关于JSdemo:点击抽奖,然后展示所有奖品,最后复原抽奖界面(简化版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/942295

相关文章

通过高德api查询所有店铺地址信息

通过高德api查询所有店铺地址电话信息 需求:通过高德api查询所有店铺地址信息需求分析具体实现1、申请高德appkey2、下载types city 字典值3、具体代码调用 需求:通过高德api查询所有店铺地址信息 需求分析 查询现有高德api发现现有接口关键字搜索API服务地址: https://developer.amap.com/api/webservice/gui

vue3项目将所有访问后端springboot的接口统一管理带跨域

vue3项目将所有访问后端springboot的接口统一管理带跨域 一、前言1.安装Axios2.创建Axios实例3.创建API服务文件4.在组件中使用API服务 二、跨域三、总结 一、前言 在Vue 3项目中,统一管理所有访问后端Spring Boot接口的最佳实践是创建一个专门的API服务层。这可以让你的代码更加模块化、可维护和集中管理。你可以使用Axios库作为HTT

Linux中拷贝 cp命令中拷贝所有的写法详解

This text from: http://www.jb51.net/article/101641.htm 一、预备  cp就是拷贝,最简单的使用方式就是: cp oldfile newfile 但这样只能拷贝文件,不能拷贝目录,所以通常用: cp -r old/ new/ 那就会把old目录整个拷贝到new目录下。注意,不是把old目录里面的文件拷贝到new目录,

风水研究会官网源码系统-可展示自己的领域内容-商品售卖等

一款用于展示风水行业,周易测算行业,玄学行业的系统,并支持售卖自己的商品。 整洁大气,非常漂亮,前端内容均可通过后台修改。 大致功能: 支持前端内容通过后端自定义支持开启关闭会员功能,会员等级设置支持对接官方支付支持添加商品类支持添加虚拟下载类支持自定义其他类型字段支持生成虚拟激活卡支持采集其他站点文章支持对接收益广告支持文章评论支持积分功能支持推广功能更多功能,搭建完成自行体验吧! 原文

图形编辑器基于Paper.js教程03:认识Paper.js中的所有类

先来认一下Paper的资源对象,小弟有哪些,有个整体的认识。认个脸。 在Paper.js的 官方文档中类大致有如下这些: 基类: ProjectViewItemPointToolSizeSegmentRectangleCurveCurveLocationMatrixColorStyleTweenToolEventGradientGradientStopEvent 二级或三级类 继承Ite

【Qt6.3 基础教程 17】 Qt布局管理详解:创建直观和响应式UI界面

文章目录 前言布局管理的基础为什么需要布局管理器? 盒布局:水平和垂直排列小部件示例:创建水平盒布局 栅格布局:在网格中对齐小部件示例:创建栅格布局 表单布局:为表单创建标签和字段示例:创建表单布局 调整空间和伸缩性示例:增加弹性空间 总结 前言 当您开始使用Qt设计用户界面(UI)时,理解布局管理是至关重要的。布局管理不仅关系到UI的外观,更直接影响用户交互的体验。本篇博

物联网系统运维——移动电商应用发布,Tomcat应用服务器,实验CentOS 7安装JDK与Tomcat,配置Tomcat Web管理界面

一.Tomcat应用服务器 1.Tomcat介绍 Tomcat是- -个免费的开源的Ser Ivet容器,它是Apache基金会的Jakarta 项目中的一个核心项目,由Apache, Sun和其他一 些公司及个人共同开发而成。Tomcat是一一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。 在Tomcat中,应用程序的成部署很简

点击Gallery弹出对应的Gallery大图

今天遇到了这么一个问题,给3个相应的缩略图,点击缩略图弹出的相应的缩略图片的大图。 解决办法:setSelection,注意这个方法是Gallery的。(下面代码功能:缩略图可以左右滑动;弹出大图可以左右滑动;点A缩略图,显示A大图。点击B大图,显示B大图。并且 不影响滑动) 代码:我的代码有点长,如果你已经有思路,就直接去百度一下setSelection(); 1. xml代码

nodejs基础教程-简单blog(8)--展示用户注册信息列表

本节课展示用户注册信息列表;当点击导航栏的“用户管理”浏览器跳转路由/admin/user 显示用户列表。 先上效果图; 开始 1,在layout.html模板中导航标签中设置路径; 2,新建文件 views/admin/user_index.html,在admin.js中设置user_index的路由为/admin/user;并查询数据库所有用户的信息 返回给前台users;

基于51单片机抽奖系统

基于51单片机抽奖系统 (仿真+程序) 功能介绍 具体功能: 1.利用5片74HC495对单片机的IO进行串并转换,进而控制5个1位数码管; 2.采用一个独立按键用于抽奖系统的启停控制; 3.8位拨码开关是用于设定随机数发生器的“种子值”(初始值); ​演示视频: 基于51单片机抽奖系统  添加图片注释,不超过 140 字(可选) 程序 #inclu