当前位置:   article > 正文

第十五届蓝桥杯(Web 应用开发)模拟赛 2 期-大学组_15届蓝桥杯web模拟赛

15届蓝桥杯web模拟赛

1. 相不相等

  1. var expectFn = function(val) {
  2. // TODO
  3. return{
  4. toBe:function (value){
  5. if(val===value){
  6. return true
  7. }else return "Not Equal"
  8. },
  9. notToBe:function (value){
  10. if(val!==value){
  11. return true
  12. }else return "Equal"
  13. }
  14. }
  15. };

2. 三行情书

  1. span {
  2. font-size: 20px;
  3. color: #837362;
  4. /* TODO:补充下面的代码 */
  5. display: block;
  6. overflow: hidden;
  7. text-overflow: ellipsis;
  8. white-space: nowrap;
  9. }
  10. p {
  11. color: #837362;
  12. /* TODO:补充下面的代码 */
  13. display: -webkit-box;
  14. -webkit-box-orient: vertical;
  15. -webkit-line-clamp: 3;
  16. overflow: hidden;
  17. }

3. 电影院在线订票

目标

请在 js/script.js 文件中补全代码,最终实现订票功能。具体需求如下:

  1. 实现异步数据读取和渲染功能,使用 axios 请求 ./data.json(必须使用该路径请求,否则可能会请求不到数据)的数据。
    • 将电影名字 name 渲染到 id 为 movie-name 的节点中。
    • 将电影售价 price 渲染到 id 为 movie-price 的节点中。
    • 将座位信息 seats 渲染到 id 为 seat-area 的节点中,二维数组中每一个子数组代表一行,0 代表没有被他人占位,1 代表已经被订购。

每一行生成的 DOM 节点格式如下:

  1. <!-- 每一行节点都使用 row class 包裹 -->
  2. <div class="row">
  3. <!-- 每个座位都具有 seat 的 class -->
  4. <div class="seat"></div>
  5. <!-- 如果座位被占了,则相应设置 occupied class -->
  6. <div class="seat occupied"></div>
  7. <!-- ...... -->
  8. </div>

完成后的页面布局效果如下: 

完成效果

  1. 实现座位选择和总价计算的功能:
    • 被别人订过的座位不能再被选择。
    • 座位被选中后,状态更新,为相应的座位添加选中样式(即 selected),并更新已选择的座位数和总价。
    • 自己所选择的座位可以被取消,并更新已选择的座位数和总价。

完成后的效果见文件夹下面的 gif 图,图片名称为 effect.gif(提示:可以通过 VS Code 或者浏览器预览 gif 图片): 

交互效果

题解 

  1. // 1.完成数据请求,生成电影名,价格以及座位情况
  2. let data={}
  3. axios.get('./data.json').then((res)=>{
  4. console.log(res);
  5. data=res.data
  6. movieNameNode.innerHTML=data.name
  7. moviePriceNode.innerHTML=data.price
  8. for(let i=0;i<data.seats.length;i++){
  9. let row= document.createElement('div')
  10. row.className='row'
  11. data.seats[i].forEach(element => {
  12. let seat= document.createElement('div')
  13. seat.className = 'seat'
  14. row.appendChild(seat)
  15. if(element){
  16. seat.classList.add('occupied')
  17. }else{
  18. seat.addEventListener('click',()=>{
  19. if(seat.className=='seat selected'){
  20. seat.classList.remove('selected')
  21. num-=1
  22. count.innerHTML=num
  23. total.innerHTML=num*20
  24. }else{
  25. seat.classList.add('selected')
  26. num+=1
  27. count.innerHTML=num
  28. total.innerHTML=num*20
  29. }
  30. })
  31. }
  32. });
  33. seatAreaNode.appendChild(row)
  34. }
  35. })

4. 老虎机

目标

找到 js/index.js 中的 GetResult 函数,完成此函数,实现以下目标:

点击开始后,可以通过 GetResult的三个参数 r1r2r3 计算出滚动后每一列图片的停留位置。当最后停留的图片都相同时,意味着玩家中了大奖!文字框(class = textPanel)显示“恭喜你,中奖了”,否则显示:“很遗憾,未中奖”。

参数介绍:r1r2r3 表示的是三列元素下的 li 的最后停留位置,分别对应第一列(id=sevenFirst)、第二列(id=sevenSecond)、第三列(id=sevenThird)。以第一列为例,最终显示的元素是 sevenFirst 下的第 r 个 li 元素。请使用显示的 li 元素的 data-point 属性判断三张图片是否相同。当 data-point 属性对应的值相同时,说明这三张图片相同。

在完成之后,请点击“开始”按钮,以下是未中奖和中奖的效果:

未中奖效果

中奖效果

题解 

  1. // GetResult 中奖结果函数,r1,r2,r3 为最后图片停留位置,以第一列为例,最终显示的元素是 sevenFirst 下的第 r 个 li 元素。
  2. GetResult(r1, r2, r3) {
  3. // TODO 待补充代码
  4. //.getAttribute('data-point') 是获取指定子元素的名为 'data-point' 的属性的值。
  5. if (sevenFirst.children[r1 - 1].getAttribute('data-point') == sevenSecond.children[r2 - 1].getAttribute('data-point') && sevenFirst.children[r1 - 1].getAttribute('data-point') == sevenThird.children[r3 - 1].getAttribute('data-point')) {
  6. textPanel.innerHTML = '恭喜你,中奖了'
  7. } else {
  8. textPanel.innerHTML = '很遗憾,未中奖'
  9. }
  10. }

5. 星际通讯

目标

完善 index.js 中的 translate 函数,完善其中的 TODO 部分:

translate 函数接收一个字符串参数 alienMessage,其中包含一系列外星人的密文。函数根据特定的翻译规则将密文翻译成人类语言,并返回翻译后的结果字符串。外星人密文翻译规则存放在 codonTable 变量中。

注意:翻译后的结果字符串之间不能有空格

特殊条件:

  • 密文如果为空,直接返回空字符串。
  • 如果密文任意一处无法翻译或遇到找不到对应翻译的密文,则返回字符串无效密语
  • 如果密文中出现了特殊密文对应的翻译结果是 stop,则停止翻译,返回之前已翻译的结果(不包括对应 stop 的密文)

以下为提供部分测试用例,通过测试用例不代表通过全部测试,请确保代码的通用性:

测试用例输入字符串预期输出
1IIXIIIXIV人类你好交个朋友
2VIIIIIXIV哈喽你好交个朋友
3 (只翻译 stop 之前的密语)IIXIIIXXIXIV人类你好
4 (只翻译 stop 之前的密语)IIXXXIIIIXIV人类
5IIXxIIIXIV无效密语
6ax4无效密语
7''''

  1. const translate = (alienMessage) => {
  2. // TODO:待补充代码
  3. let str=''
  4. if(alienMessage.length===0){
  5. console.log(alienMessage.length);
  6. return str;
  7. }else{
  8. for(let i=0;i<alienMessage.length;i+=3){
  9. let key=alienMessage.slice(i,i+3)
  10. if(codonTable[key]){
  11. if(key!='XXI'){
  12. str+=codonTable[key]
  13. }else{
  14. return str
  15. }
  16. }else{
  17. return '无效密语'
  18. }
  19. }
  20. }
  21. return str
  22. };

6. 蓝桥排位赛

目标

请在 js/index.js 文件中补全代码,具体需求如下:

  1. 完成数据请求(数据来源 ./mock/map.json),map.json 中存放的数据为省市对应的学校数据,使用到的字段介绍如下:
参数类型说明
namestring省/市名称
school_countnumber加入备赛的学校数量
valuenumber热度值
school_powerobject战力存放对象,其中 name 为学校名称,power 为战力值
  1. 根据请求的数据正确完成左侧热力地图。
  2. 右侧战力榜中柱形图中,根据 power 字段的值对所有学校进行排序,取出排在前 10 名的学校,从左到右降序排列。
  • 完成后运行起来,效果如下:

题解

  1. onMounted(() => {
  2. // TODO:待补充代码 请求数据,并正确渲染柱形图和地图
  3. let mapar=[]
  4. let barshow=[]
  5. showChartBar();
  6. showChinaMap();
  7. axios.get("./mock/map.json").then(res=>{
  8. let das=res.data
  9. das.forEach(e=>{
  10. let maps={
  11. name:e.name,
  12. school_count:e.school_count,
  13. value:e.value
  14. }
  15. mapar.push(maps)
  16. barshow.push(e.school_power)
  17. })
  18. // console.log(mapar);
  19. })
  20. let barshow2=barshow.flat()
  21. // barshow2.reverse()
  22. console.log(barshow2);
  23. let result2=[]
  24. let result3=[]
  25. for(let i=0;i<10;i++){
  26. result2.push(barshow2[i].name)
  27. result3.push(barshow2[1].power)
  28. }
  29. showChinaMap(mapar)
  30. });

7. 拼出一个未来

目标

完善 js/index.js 的 TODO 部分,实现以下目标:

  1. 将拖动的拼图块与目标拼图块的图片进行交换,这包括交换图片的 src 属性和 data-id 属性。待补充代码的 drop 函数中现有的两个变量解释如下:draggedPiece:代表被拖动的拼图块的图片元素的父元素。this:代表当前目标位置的拼图块的图片元素父元素。

拼图成功后的 DOM 如下,图片 srcaltdata-id 均按照 1-9 顺序排列

  1. <div class="puzzle-container" id="puzzle-container">
  2. <div class="puzzle-piece" draggable="true">
  3. <img src="./images/img1.png" data-id="1" />
  4. </div>
  5. <div class="puzzle-piece" draggable="true">
  6. <img src="./images/img2.png" data-id="2" />
  7. </div>
  8. <!-- ... 省略部分代码 -->
  9. <div class="puzzle-piece" draggable="true">
  10. <img src="./images/img9.png" data-id="9" />
  11. </div>
  12. </div>

  1. 显示/隐藏成功消息:拼图成功则设置成功消息元素(id=success-message)的 class 名为 show,否则该元素的 class 名为 hide。(注意:成功消息元素同时有且只能有一个 class 名

完成后效果如下:

完成效果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/705820
推荐阅读
相关标签
  

闽ICP备14008679号