javaScript蓝桥杯-----宝贵的一票

news2024/11/26 10:35:14

目录

  • 一、介绍
  • 二、准备
  • 三、目标
  • 四、代码
  • 五、检测踩坑!!
  • 六、完成


一、介绍

公司经常举办各种活动,但一到投票环节就犯了难,于是公司决定安排小蓝开发一个投票系统,更好的收集大家的投票信息。为了赶在下一次活动开始前上线,小蓝正在马不停蹄的赶工中,请你也来帮助小蓝完成部分功能吧。

二、准备

本题已经内置了初始代码,打开实验环境,目录结构如下:

├── css
├── images
├── js
│   └── jquery.min.js
└── index.html

其中:

  • index.html 是主页面。
  • images 是存放图片的文件夹。
  • css 是存放样式文件的文件夹。
  • js/jquery.min.js 是 jQuery 文件。
    选中 index.html 右键启动 Web Server 服务(Open with Live Server),让项目运行起来。

接着,打开环境右侧的【Web 服务】,就可以在浏览器中看到如下效果:
在这里插入图片描述

三、目标

完成 index.html 文件中的 TODO 部分。

  1. 点击添加选项,页面中新增一个选项。选项前文字按照:选项 1,选项 2,选项 3 … 顺序排列,当页面中的选项大于 2 个时,选项后面跟随删除按钮(即 x 图标)。带有删除图标的选项 DOM 结构如下:
<div class="mb-3 row item">
  <label class="col-sm-2 col-form-label txt">选项1</label>
  <div class="col-sm-9">
    <input type="text" class="form-control" />
  </div>
  <div class="col-sm-1">
    <!-- 删除图标 -->
    <img class="del-icon" src="./images/x.svg" alt="" />
  </div>
</div>

  1. 点击删除按钮,删除当前选项,并且选项前文字按照:选项 1,选项 2,选项 3 … 顺序排列,当选项数量小于等于 2 个时,选项后面无删除按钮。

完成后,最终页面效果如下:
在这里插入图片描述

四、代码

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>宝贵的一票</title>
    <script src="./js/jquery.min.js"></script>
    <link rel="stylesheet" href="./css/bootstrap.min.css" />
    <link rel="stylesheet" href="./css/style.css" />
  </head>

  <body>
    <div class="inner-container shadow">
      <div class="mb-3 row">
        <label class="col-sm-2 col-form-label">投票主题</label>
        <div class="col-sm-9">
          <input type="text" class="form-control" />
        </div>
      </div>
      <div class="list"></div>
      <div class="add">
        <div class="addtxt">
          <img src="./images/plus-square.svg" alt="加号图标" />
          添加选项
        </div>
      </div>
      <div class="form-check checkbox-one">
        <input class="form-check-input" type="checkbox" value="" />
        <label class="form-check-label" for="flexCheckDefault">
          支持多选
        </label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="checkbox" value="" />
        <label class="form-check-label" for="flexCheckDefault">
          公开投票结果
        </label>
      </div>

      <div class="row bottom">
        <div class="col">
          <a class="historytxt" href="javascript:void(0)">历史投票</a>
        </div>
        <div class="col"></div>
        <div class="col">
          <button type="button" class="btn btn-light">取消</button>
          <button type="button" class="btn btn-primary">发起投票</button>
        </div>
      </div>
    </div>

    <script>
      let initRender = (txt) => {
        return `<div class="mb-3 row">
                <label class="col-sm-2 col-form-label txt">${txt}</label>
                <div class="col-sm-9">
                    <input type="text" class="form-control">
               </div>
            </div>`;
      };
      $(
        (function () {
          // 初始化的时候渲染两条数据,且不带删除符号
          for (let index = 0; index < 2; index++) {
            let initList = initRender(`选项${index + 1}`);
            $(".list").append(initList);
          }

          // 点击加号逻辑
          $(".add").click(function () {
            // TODO 待补充代码
          });
          // 点击 x 删除逻辑,列表小于 2 项时不显示删除图标
          $(document).on("click", ".del-icon", function () {
            // TODO 待补充代码
          });
        })()
      );
    </script>
  </body>
</html>

五、检测踩坑!!

一开始的思路是修改initRender的模板 将其替换为都有×号的模板,然后在执行判断 如果长度小于等于2 就将其display修改为none,完成后看起来效果一样,但是检测死活过不了,想了想可能是因为他的检测方式不管display是否为none都可以模拟点击到X图标,故长度等于2时仍然被删除成功。

六、完成

 <script>
    let initRender = (txt) => {
      return `<div class="mb-3 row">
                <label class="col-sm-2 col-form-label txt">${txt}</label>
                <div class="col-sm-9">
                    <input type="text" class="form-control">
               </div>
            </div>`;
    };
    $(
      (function () {
        // 初始化的时候渲染两条数据,且不带删除符号
        for (let index = 0; index < 2; index++) {
          let initList = initRender(`选项${index + 1}`);
          $(".list").append(initList);
        }
        function format() {
          //1.图标的处理
          const leng = $('.list').children().length
          let tem = `<div class="col-sm-1">
             <!-- 删除图标 -->
            <img class="del-icon" src="./images/x.svg" alt="" />
             </div>`
            //先全部删除图标 再判断长度 如果大于2则全加
          $('.col-sm-1').remove()
          leng > 2 && $('.list').children().append(tem)
          //2.名称的处理 
          for (var i = 0; i < leng; i++) {
            $('.txt')[i].innerHTML = `选项${i + 1}`
          }
        }
        // 点击加号逻辑
        $(".add").click(function () {
          // TODO 待补充代码
          //添加
          let initList = initRender(`选项${$('.list').children().length + 1}`);
          $(".list").append(initList);
          //格式化
          format()
        });
        // 点击 x 删除逻辑,列表小于 2 项时不显示删除图标
        $(document).on("click", ".del-icon", function (e) {
          // TODO 待补充代码
          //删除当前节点
          e.target.parentNode.parentNode.remove()
          //格式化
          format()
        });
      })()
    );
  </script>

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

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

相关文章

k8s亲和性和反亲和性

1.前言 k8s的亲和性和反亲和性都是通过标签来影响pod的调度&#xff0c;在此基础上亲和性又分为硬亲和性和软亲和性&#xff0c;required为硬亲和性即标签内容必须要符合才能调度&#xff0c;preferred为软亲和性即标签内容不一定要符合也能调度&#xff0c;除此之外还有node亲…

Unsupported major.minor version 51.0解决办法

先看看我的报错截图 [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 08:51 min [INFO] Finished at: 2023-0…

[2.0快速体验]Apache Doris 2.0 日志分析快速体验

1. 概述 应用程序、服务器、云基础设施、IoT 和移动设备、DevOps、微服务架构—最重要的业务和 IT 发展趋势帮助我们以前所未有的方式优化运维和客户体验。但这些趋势也导致由机器生成的数据出现爆炸式成长&#xff0c;其中包括日志和指标等&#xff0c;例如&#xff0c;用户交…

Qcon 广州主题演讲:融云实时社区的海量消息分发实践

移步公众号文章 预约纸质版《作战地图》 5 月 26 日-27 日&#xff0c;QCon 全球软件开发大会落地广州。关注【融云全球互联网通信云】了解更多 融云 IM 服务架构师罗伟受邀分享“实时社区的海量消息分发实践”&#xff0c;从实践中来的前沿技术分享&#xff0c;收获现场开发者…

Nautilus Chain上首个DEX PoseiSwap即将开启IDO,潜力几何?

据悉&#xff0c;Nautilus Chain 上的首个 DEX PoseiSwap 即将开启 IDO &#xff0c;根据官方的最新公告显示&#xff0c;PoseiSwap 即将于 6 月 13 日至 6 月 14 日期间&#xff0c;在 Bounce 平台开启其治理通证 $POSE 的 IDO&#xff08;Initial DEX Offering&#xff09;&a…

openEuler Linux 部署 FineReport

openEuler Linux 部署 FineReport 部署环境 环境版本openEuler Linux22.03MySQL8.0.33FineReport11.0 环境准备 升级系统内核和软件 yum -y updatereboot安装常用工具软件 yum -y install vim tar net-tools 安装MySQL8 将 MySQL Yum 存储库添加到系统的存储库列表中 s…

【JavaEE】表白墙再升级(MySQL实现持久化)

表白墙再升级&#xff08;MySQL实现持久化&#xff09; 文章目录 【JavaEE】表白墙再升级&#xff08;MySQL实现持久化&#xff09;1. 后端引入JDBC的依赖2. 建库建表3. 编写数据库代码&#xff08;JDBC&#xff09;3.1 doGet方法改写3.1.1 构建本地数据源3.1.2 用本地数据源构…

移动端的轮播图

效果 技术选取 前端框架用的是vue3&#xff0c;使用的组件库为element-plus以及vant4 引入element-plus和vant4 安装element-plus cnpm install element-plus --save 安装按需导入 cnpm install -D unplugin-vue-components unplugin-auto-import 安装Vant cnpm i vant 按…

Fiddler抓包工具之fiddler的composer可以简单发送http协议的请求

一&#xff0c;composer的详解 右侧Composer区域&#xff0c;是测试接口的界面&#xff1a; 相关说明&#xff1a; 1.请求方式&#xff1a;点开可以勾选请求协议是get、post等 2.url地址栏&#xff1a;输入请求的url地址 3.请求头&#xff1a;第三块区域可以输入请求头信息…

图的简单理解

文章目录 1、图的基本概念2、图的存储结构2.1 邻接矩阵2.2 邻接表 3、图的遍历3.1 广度优先遍历3.2 深度优先遍历 4、最小生成树4.1 Kruskal算法4.2 Prim算法 5、最短路径5.1 单源最短路径–Dijkstra算法5.2 单源最短路径–Bellman-Ford算法5.3 多源最短路径 1、图的基本概念 …

路径规划算法:基于差分进化优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于差分进化优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于差分进化优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

nginx的rewrite功能

常用的Nginx 正则表达式 ^匹配输入字符串的起始位置$匹配输入字符串的结束位置*匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll”、“olll”&#xff0c;但不能匹配“o”?匹配前面的字符零次或一次…

【动态规划专栏】--简单-- 动态规划经典题型

目录 动态规划 动态规划思维&#xff08;基础&#xff09; 状态表示&#xff08;最重要&#xff09; 状态转移方程&#xff08;最难&#xff09; 初始化&#xff08;细节&#xff09; 填表顺序&#xff08;细节&#xff09; 返回值&#xff08;结果&#xff09; 解码方…

【Python FTP/SFTP】零基础也能轻松掌握的学习路线与参考资料

一、Python FTP/SFTP的学习路线 Python FTP/SFTP是Python语言的两种常用的文件传输协议。在学习Python网络编程过程中&#xff0c;学习FTP/SFTP是非常重要的一步。下面给出Python FTP/SFTP的学习路线&#xff1a; 了解FTP/SFTP协议 在开始学习Python FTP/SFTP之前&#xff0…

LSB信息隐藏——Python实现(完整解析版)

系列文章目录 仿射密码实验-Python实现 仿射密码实验——Python实现(完整解析版) DES密码实验-C语言实现 MD5密码实验——Python实现(完整解析版) 文章目录 系列文章目录前言实验方法实验环境实验内容实验步骤1.LSB原理2.确定设计模块Lsb——embdedLsb——extract 实验结果实验…

performance_schema 初相识 配置详解 应用

千金良方&#xff1a;MySQL性能优化金字塔法则 第4章 performance_schema初相识 第5章 performance_schema配置详解 第6章 performance_schema应用示例荟萃 简介 1、实时监控Server性能监控和诊断的工具 2、它提供了丰富的性能指标和事件&#xff0c;可以帮助你深入了解 MyS…

2023年6月PMP®项目管理认证招生简章

PMP认证是Project Management Institute在全球范围内推出的针对评价个人项目管理知识能力的资格认证体系。国内众多企业已把PMP认证定为项目经理人必须取得的重要资质。 【PMP认证收益】 1、能力的提升&#xff08;领导力&#xff0c;执行力&#xff0c;创新能力&#xff0c…

python 编译安装指定版本 for linux

python环境是linux中必备的&#xff0c;部分发行版会自带python&#xff0c;有时候需要安装手动安装 注意&#xff1a;如果需要多个版本并存&#xff0c;建议使用conda环境&#xff0c;如果自己配置多版本&#xff0c;需要用多个软链接 conda环境&#xff0c;可以参考&#x…

【CSS Zoro 01】说在前面 CSS概念 CSS语法 CSS选择器 元素 id 类 组合 通用 分组 属性 后代 子元素 相邻兄弟

CSS 说在前面概念语法 syntaxCSS选择器 说在前面 最近挺喜欢看One Piece的&#xff0c;并且发现前端三剑客如果对应上Sanji&#xff0c;Zoro和Luffy的话会很有趣&#xff0c;所以说非常想在博客里面对应上小彩蛋&#xff0c;即使会损失一些SEO&#xff0c;但是这样做对我来说很…

算法修炼之筑基篇——筑基一层(解决01背包问题)

✨博主&#xff1a;命运之光 ✨专栏&#xff1a;算法修炼之练气篇​​​​​ ✨博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;学习了算法修炼之练气篇想必各位蒟蒻们的基础已经非常的扎实了&#xff0c;下来我们进阶到算法修炼之筑基篇的学习。筑基期和练气期…