蓝桥杯 —— Web前端(功能实现类)【标题即题目链接,点击查看具体要求】

简介: 蓝桥杯 —— Web前端(功能实现类)【标题即题目链接,点击查看具体要求】

前言

功能实现类,是考察的重要一部分。我们要分析好功能点,才能逻辑清晰的去实现它,当然这离不开扎实的基础。

一、蓝桥杯是什么?🤔

蓝桥杯一般指蓝桥杯全国软件和信息技术专业人才大赛。

二、功能实现类题目

1.封装函数实现个人所得税计算器⭐

c9c9523aea3a4335a9b0ccdef43bccb7.png解决方案:该题通过简单的 if…else 条件判断即可实现

  function cal(salary) {
      // TODO: 在此处补充代码
     if(salary <= 5000){
         return 0
     }else if(salary > 5000 && salary <= 9000){
         return (salary - 5000) * 0.03
     }else if(salary > 9000 && salary <= 15000){
         return (salary - 5000) * 0.05
     }else{
      return (salary - 5000) * 0.1
     }
  }

2.封装简易计算器⭐

db3ba3bdfbb740888717f5c7d6803343.png

解决方案:使用 if…else 语句,进行相应的操作

  if(type==0){
        return num1 + num2
    }else if(type==1){
        return num1 - num2
    }else if(type==2){
        return num1 * num2
    }else if(type==3){
        return num1 / num2
    }

3.关于你的欢迎语⭐

67757f0f7d5f4a31a36ad0eeaa7a3aaa.png解决方案:

  1. 用 ES5 的 ''+ 进行拼接
  2. 使用 ES6 的模板字符串
  //ES5
  result = "欢迎用户" + subject.value + "在" + event2.value + "学习" + event1.value + "课程!"

ES6 模板字符串参考链接

  //ES6
  result = `欢迎用户${subject.value}在${event2.value}学习${event1.value}课程!`

4.echarts柱形图⭐

30e7f81eaf08448e89d9a2ffa6f28fcd.png

解决方案:由图可以看出,姓名数据呈现在 x 轴,并非 y 轴。所以我们把原本写在 y 轴的数据写入 x轴,并把 y轴 中的数据删除即可

  // x轴
  xAxis:{
    data: ['张三', '李四', '王五', '贺八', '杨七', '陈九']
  },
  // y轴
  yAxis: {
  }

5.折叠手风琴⭐⭐

cd1d7d4051ef495c8cdceb745548d026.png

解决方案:该题目使用了 jQuery。每个 div 都绑定了 option 类属性。可以使用 $('.option') 获取到 div ,然后给它添加点击事件。对被点击到的 div 进行添加 active 属性,给其兄弟节点(不包含自己)移出 active 属性。


增加删除样式参考链接

兄弟节点参考链接


注意点:


$(this) 不需要加 ''

addClass():增加样式

removeClass():删除样式

siblings():兄弟节点(不包括自己)

  $(function(){
      $('.option').click(function(){
          $(this).addClass('active')
          $(this).siblings().removeClass('active')
      })
  })

6.新年贺卡⭐⭐⭐

62b6094d9f9041cbade4d8b92486ad1f.png

解决方案:通过生成随机数的值作为 greetings 数组的下标,然后再 show() 中呈现出随机获取的数组内容。

生成随机数参考链接

注意:

获取的随机数要用 [] 包裹着,作为 greetings 数组的下标

  function writeGreeting() {
    return greetings[(Math.floor(Math.random()*5))]
  }
  function show(greetingDisplay) {
    greetingDisplay.innerHTML = writeGreeting()
  }

7.搜一搜呀⭐⭐⭐

d4f6d620e6cf4a92a2da36b7ac08a97b.png

解决方案:该题运用了 vue 的知识,实现了用户输入关键字,通过双向数据绑定从而实现模糊查询。我们可以使用 filter() 方法,对数组进行过滤(它并不会改变原始数组)。然后通过 includes() 方法匹配要查的数据是否在数组里。


数组常用方法参考链接

字符串常用方法参考链接

  filteredList() {
      return this.postList.filter(item => {
            return item.title.includes(this.search)
        })
    }

8.卡片化标签页⭐⭐⭐⭐

7d960c8646ba43b5a71e4b4602b7b720.png

解决方案:该题目,通过点击上方标签,实现下方内容也相应改变的联动。


获取到所有上面的按钮(div) 和 下面的内容(div)

对按钮遍历,给按钮绑定点击事件,点击按钮,先把所有的样式去掉,然后给当前被点击的按钮设置样式。

设置 btns 索引,给下面呈现的内容使用

获取到自定义的 index

通过对下面的 div 进行遍历,同样先把所有的样式去掉,然后给当前呈现的内容设置样式。

注意:

  1. 绑定样式:className
  2. 点击的是谁,就给谁设置索引,供被动改变的使用
  3. 定义:btns[i].setAttribute('index',i)
  4. 获取:var index = this.getAttribute('index')
  像这种联动的问题,需要通过给主动方设置索引,然后供被动方获取并使用,从而达到目标


  function init() {
      var btns = document.querySelectorAll('.tabs div')
      var divs = document.querySelectorAll('#content div')
      for(var i=0;i<btns.length;i++){
        btns[i].setAttribute('index',i)
        btns[i].onclick = function(){
          for(var i=0;i<btns.length;i++){
            btns[i].className = ''
          }
          this.className = 'active'
          var index = this.getAttribute('index')
          for(var i=0;i<divs.length;i++){
            divs[i].className = ''
          }
          divs[index].className = 'active'
        }
      }
  }

9.时间管理大师⭐⭐⭐⭐⭐

f7f457502e394a66b1dd242c270fb136.png

解题方案:该题目主要考察vue的基本知识。逻辑要清晰,一步一步的实现功能。


一、实现添加功能

在 data 中初始化数组 todos:[],里面存放输入的数据。

在 data 中初始化用户输入的内容 content = '',并在输入框进行双向数据绑定 v-model="content"

在 methods 里创建 addTodo 方法,用于添加计划内容。当用户输入为空时,提示不能为空,当不为空时,通过 push() 方法把数据存入 todos 数组。并把文本框设置为空。

给确认按钮绑定点击事件,@click='addTodo'。

删除多余的<li></li>,对呈现内容的 <li></li> 进行 v-for 渲染,通过插值语法 {{}} 把数据呈

现在相应位置。


二、实现对任意行的删除功能

在 methods 里创建 deleteTodo(index){} 方法,通过 this.todos.splice(index,1) 实现对当前索引内容的删除。

在删除按钮上绑定点击事件,@click = "deleteTodo"


三、实现清除所有内容

在 methods 里创建 clearAll() 方法,通过 this.todos = [] 实现对数据的清空。

在清空按钮上绑定点击事件,@click = "clearAll"


四、隐藏

通过 v-if 条件渲染,在暂无数据的 <li> 上添加判断 v-if="todos.length==0",即当数组的长度为 0 时,呈现。

在总数和清除的 <li> 上添加 v-if="todos.length >0 ",即当数组长度大于 0 时,呈现。

Vue模板语法参考链接

Vue条件语句和循环语句参考链接

数组方法常用参考链接

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>任务管理器</title>
<link type="text/css" href="css/style.css" rel="stylesheet" />
</head>
  <body>         
    <div id="box">
    <div class="head">
      <h2>Todos</h2>
      <p>罗列日常计划,做一个时间管理大师!</p>
      <div class="input">
        <span>内容</span>
        <input type="text" placeholder="请输入你要做的事" v-model="content"/>
        <span id='add' @click="addTodo">确认</span>
      </div>
    </div>
    <ul class="list">
      <li  v-if="todos.length==0">
        暂无数据
      </li>
      <li v-for="(todo,index) in todos">
        <!-- 前面的序号 -->
        <span class="xh">{{index+1}}</span>
        <!-- 列表内容 -->
        <span>{{todo}}</span>
        <!-- 删除按钮 -->
        <span class="qc" @click="deleteTodo"></span>
      </li>
      <li v-if="todos.length >0 ">
        <b>
          总数:{{todos.length}}
        </b>
        <b id='clear' @click="clearAll">清除</b>
      </li>
    </ul>
    </div>
    <script src="js/vue.js"></script>
    <script>
      var top= new Vue({
        el:"#box",
        // 在此处补全代码,实现所需功能
        data:{
          todos:[],
          content:''
        },
        methods:{
          addTodo(){
            if(!this.content.trim()){
              alert('内容不能为空')
            }else{
              this.todos.push(this.content)
              this.content = ''
            }
          },
          deleteTodo(index){
            this.todos.splice(index,1)
          },
          clearAll(){
            this.todos = []
          }
        }
      })
    </script>
  </body>
</html>

总结

功能实现的难点在于如何利用所学知识,实现相应功能。第一次做可能做不出来,但要注意培养这方面的处理能力,对于典型的例子进行 深度钻研 和 理解。

不积跬步无以至千里🌕 ,不积小流无以成江海🌊。

道阻且长,一起加油,与君共勉!😉

不积跬步无以至千里 不积小流无以成江海

相关文章
|
1天前
|
开发框架 前端开发 JavaScript
Web前端框架
Web前端框架等名词
10 2
|
11天前
|
人工智能 前端开发
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
|
14天前
|
存储 前端开发 JavaScript
从 Web 2.0 到 Web 3.0:前端开发的历史与未来
【10月更文挑战第4天】本文探讨了从 Web 2.0 到 Web 3.0 的前端开发演变过程。Web 2.0 时代,前端开发者从静态网页设计走向复杂交互,技术框架如 jQuery、React 和 Vue 带来了巨大的变革。而 Web 3.0 以区块链技术为核心,带来了去中心化的互联网体验,前端开发者面临与区块链交互、去中心化身份验证、分布式存储等新挑战。文章总结了 Web 2.0 和 Web 3.0 的核心区别,并为开发者提供了如何应对新技术的建议,帮助他们在新时代中掌握技能、设计更安全的用户体验。
46 0
从 Web 2.0 到 Web 3.0:前端开发的历史与未来
|
1天前
|
监控 前端开发 JavaScript
前端技术探索:构建高效、可维护的Web应用
【10月更文挑战第23天】前端技术探索:构建高效、可维护的Web应用
6 0
|
14天前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
|
14天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
30 0
|
14天前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
|
14天前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
14天前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
|
14天前
|
前端开发 算法 测试技术
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
本文对比测试了通义千文、文心一言、智谱和讯飞等多个国产大模型在处理基础计数问题上的表现,特别是通过链式推理(COT)提示的效果。结果显示,GPTo1-mini、文心一言3.5和讯飞4.0Ultra在首轮测试中表现优秀,而其他模型在COT提示后也能显著提升正确率,唯有讯飞4.0-Lite表现不佳。测试强调了COT在提升模型逻辑推理能力中的重要性,并指出免费版本中智谱GLM较为可靠。
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT