蓝桥杯 —— Web前端(数据交互类)【标题即题目链接,点击查看具体要求】

简介: 蓝桥杯 —— Web前端(数据交互类)【标题即题目链接,点击查看具体要求】

前言

web前端也会涉及到算法,但一般比较简单。

一、蓝桥杯是什么?🤔

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

二、数据交互类题目

1.天气预报查询⭐⭐

f7a9acf731ad41efad2416f52a5d8c8c.png

解决方案:通过使用 jQuery 的 AJAX 请求,获取 JSON 中的数据。准备好一个对象,把数据存放到这个对象里面,然后获取到呈现内容的 div, 通过 for 循环遍历,把 JSON 文件中的内容在对应位置呈现出来。

jQuery 发送 AJAX参考链接

function getweather() {
    let data = {}
    $.ajax({
        type:'GET',
        dataType:'JSON',
        url:'js/weather.json',
        async:false,
        success:function(res){
            data = res.result
            var items = document.querySelectorAll('.item')
            for(var i=0;i<data.length;i++){
                items[i].children[0].src = data[i].weather_icon
                items[i].children[1].children[0].innerHTML = data[i].weather
                items[i].children[1].children[1].innerHTML = data[i].temperature
                items[i].children[1].children[2].innerHTML = data[i].winp
                items[i].children[1].children[3].children[0].innerHTML = data[i].days
                items[i].children[1].children[3].children[1].innerHTML = data[i].week
            }
        }
    }) 
}

2.实现卡号绑定功能⭐⭐

3f6a69c9ab44470697d1f30dbe0600ae.png

解决方案:通过使用 jQuery 的 AJAX 请求,获取 JSON 中的数据。通过 for 循环遍历,卡号和密码都匹配正确的 flag 设置为 true,之后再通过 if…else 条件语句,在对应 div 展示相应的内容。

function bind(cardno, password) {
    //Todo:补充代码
    let data = {}
    $.ajax({
        type:'GET',
        dataType:'JSON',
        url:'js/cardnolist.json',
        async:false,
        success:function(res){
            data = res.cardnolist
            for(var i=0;i<data.length;i++){
                var flag = false
                if(data[i].cardno == cardno && data[i].password == password){
                    flag = true
                    break
                }
            }
            if(flag){
                $('#tip1').addClass('show').removeClass('fade')
                $('#tip2').removeClass('show').addClass('fade')
            }else{
                $('#tip2').addClass('show').removeClass('fade')
                $('#tip1').removeClass('show').addClass('fade')
            }
        }
    })
}

3.购物车⭐⭐⭐

be89262e298e4791aac1d8ba9688d69f.png解决方案:在 created(){} 里使用 axios 发送请求,获取到 JSON 文件里面的数据,然后对购物车列表添加 v-for 渲染,在对应位置做出数据或图片的呈现。然后在定义两个方法,一个是 add() 方法,另一个是 sub() 方法,再绑定到对应按钮上,从而实现个数的加减。

Axios 发送请求参考链接

<!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>购物车</title>
  <script src="./js/vue.js"></script>
  <script src="./js/axios.js"></script>
  <link rel="stylesheet" href="./css/element-ui.css">
  <link rel="stylesheet" href="./css/index.css">
</head>
<body>
  <div class="container" id="app">
    <h4>购物车</h4>
    <!-- 购物车列表 -->
    <div v-for="(good,index) in carlist">
      <el-card class="box-card">
        <!-- 商品图片 -->
        <img :src="good.img">
        <div>
          <span>
            <!-- 商品名称 -->
            {{good.name}}
          </span>
          <div class="bottom clearfix">
            <el-button type="text" class="button" @click="add(index)">+</el-button>
            <el-button type="text" class="button">
              <!-- 商品数量 -->
              {{good.num}}
            </el-button>
            <el-button type="text" class="button" @click="sub(index)">-</el-button>
          </div>
        </div>
      </el-card>
    </div>
  </div>
  </div>
  <!-- 引入组件库 -->
  <script src="./js/element-ui.js"></script>
  <script>
    new Vue({
      el: "#app",
      data: {
        carlist: [] //购物车列表
      },
      created() {
        // 在这里使用axios 发送请求
        axios
        .get('./carList.json')
        .then(res=>{
          this.carlist = res.data
        })
        .catch(function(error){
          console.log(error)
        })
      },
      methods:{
        add(index){
          this.carlist[index].num++
        },
        sub(index){
          if(this.carlist[index].num>0){
            this.carlist[index].num--
          }
        }
      }
    })
  </script>
</body>
</html>

总结

数据交互,通常是发送 AJAX 或者 Axios 等请求,获取到数据,然后再对数据进行一些列的操作,达到预期的功能效果。

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

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

相关文章
|
28天前
|
前端开发 JavaScript
探索现代Web应用的微前端架构
【10月更文挑战第40天】在数字时代的浪潮中,Web应用的发展日益复杂多变。微前端架构作为一种新兴的设计理念,正逐步改变着传统的单一前端开发模式。本文将深入探讨微前端的核心概念、实现原理及其在实际项目中的应用,同时通过一个简单的代码示例,揭示如何将一个庞大的前端工程拆分成小而美的模块,进而提升项目的可维护性、可扩展性和开发效率。
|
20天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
29 6
|
27天前
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
|
1月前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
7月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
84 1
|
7月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
110 0
|
7月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
86 0
|
7月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
86 0
|
7月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
92 0
|
7月前
|
机器学习/深度学习 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-996 车的放置
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-996 车的放置
93 0