javaScript蓝桥杯----绝美宋词

这篇具有很好参考价值的文章主要介绍了javaScript蓝桥杯----绝美宋词。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、介绍

“今宵酒醒何处,杨柳岸晓风残月”,“蓦然回首,那人却在灯火阑珊处”,“试问闲愁都几许?一川烟草,满城风絮,梅子黄时雨” …

宋词可谓是古代文学桂冠上一颗璀璨的明珠,本题将实现一个在搜索框中输入关键字,实时显示符合条件的完整宋词的功能。

二、准备

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

├── css
│   └── style.css
├── data.json
├── index.html
└── js
    ├── axios.min.js
    └── vue.min.js

其中:

  • index.html 是主页面。
  • js/vue.min.js 是项目用到的 vue2.x 版本文件。
  • js/axios.min.js 是 axios 文件。
  • data.json 是项目中需要用到宋词数据。
  • css/style.css 是样式文件。

选中 index.html 右键启动 Web Server 服务(Open with Live Server),让项目运行起来。

接着,打开环境右侧的【Web 服务】,就可以在浏览器中看到如下效果:
javaScript蓝桥杯----绝美宋词

三、目标

请使用 Vue ,完成 index.html 文件中的 TODO 部分。

  1. 完成数据请求(数据来源 ./data.json),data.json 是宋词数据,poetry_content 表示词句,title 表示词牌名,author 表示词人。
  2. 在输入框输入关键词时在 ul(class = suggestions)的元素中实时显示词牌名、词句、词人中包含关键词的完整词句(包含词牌名、词人)列表,当关键词为空或者匹配不到时 ul(class = suggestions)元素的子节点为空。完整词句的 DOM 结构按照如下规定显示:
<!-- 每一首完整词句用一个 li 包裹 -->
<li>
  <span class="poet">词句</span>
  <span class="title">词牌名 - 词人</span>
</li>

例:

<li>
  <span class="poet"
    >常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭</span
  >
  <span class="title">如梦令 - 李清照</span>
</li>
  1. 高亮匹配到的所有词句中的关键词。即使用 <span class="highlight"></span> 标签包裹所有关键词。

例:(关键词:雨)

<li>
  <span class="poet"
    >寒蝉凄切,对长亭晚,骤<span class="highlight"></span
    >初歇。都门帐饮无绪,方留恋处,兰舟催发。执手相看泪眼,竟无语凝噎。念去去千里烟波,暮霭沉沉楚天阔。多情自古伤离别,更那堪冷落清秋节。今宵酒醒何处,杨柳岸晓风残月。此去经年,应是良辰美景虚设。便纵有千种风情,更与何人说</span
  >
  <span class="title"><span class="highlight"></span>霖铃 - 柳永</span>
</li>

注意:本题要求的是实时显示,即输入完成的同时显示结果,非失去焦点显示。

完成后,最终页面效果如下:

javaScript蓝桥杯----绝美宋词

四、代码

data.json

[
  {
    "poetry_content": "寒蝉凄切,对长亭晚,骤雨初歇。都门帐饮无绪,方留恋处,兰舟催发。执手相看泪眼,竟无语凝噎。念去去千里烟波,暮霭沉沉楚天阔。多情自古伤离别,更那堪冷落清秋节。今宵酒醒何处,杨柳岸晓风残月。此去经年,应是良辰美景虚设。便纵有千种风情,更与何人说",
    "title": "雨霖铃",
    "author": "柳永"
  },
  {
    "poetry_content": "常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭",
    "title": "如梦令",
    "author": "李清照"
  },
  {
    "poetry_content": "寻寻觅觅,冷冷清清,凄凄惨惨戚戚。乍暖还寒时候,最难将息。三杯两盏淡酒,怎敌他晓来风急?雁过也,正伤心,却是旧时相识。满地黄花堆积。憔悴损,如今有谁堪摘?守著窗儿独自,怎生得黑?梧桐更兼细雨,到黄昏、点点滴滴。",
    "title": "声声慢",
    "author": "李清照"
  },
  {
    "poetry_content": "纤云弄巧,飞星传恨,银汉迢迢暗渡。金风玉露一相逢,便胜却人间无数。柔情似水,佳期如梦,忍顾鹊桥归路。两情若是久长时,又岂在朝朝暮暮。",
    "title": "鹊桥仙",
    "author": "秦观"
  },
  {
    "poetry_content": "东风夜放花千树,更吹落,星如雨。宝马雕车香满路,凤箫声动,玉壶光转,一夜鱼龙舞。蛾儿雪柳黄金缕,笑语盈盈暗香去。众里寻他千百度,蓦然回首,那人却在灯火阑珊处",
    "title": "青玉案",
    "author": "辛弃疾"
  },
  {
    "poetry_content": "红酥手。黄縢酒。满城春色宫墙柳。东风恶。欢情薄。一怀愁绪,几年离索。错错错。春如旧。人空瘦。泪痕红浥鲛绡透。桃花落。闲池阁。山盟虽在,锦书难托。莫莫莫。",
    "title": "钗头凤",
    "author": "陆游 "
  },
  {
    "poetry_content": "郁孤台下清江水,中间多少行人泪?西北望长安,可怜无数山。青山遮不住,毕竟东流去。江晚正愁余,山深闻鹧鸪。",
    "title": "菩萨蛮",
    "author": "辛弃疾"
  },
  {
    "poetry_content": "花褪残红青杏小。燕子飞时,绿水人家绕。枝上柳绵吹又少。天涯何处无芳草。墙里秋千墙外道。墙外行人,墙里佳人笑。笑渐不闻声渐悄。多情却被无情恼。",
    "title": "蝶恋花",
    "author": "苏轼"
  },
  {
    "poetry_content": "伫倚危楼风细细,望极春愁,黯黯生天际。草色烟光残照里,无言谁会凭阑意。拟把疏狂图一醉,对酒当歌,强乐还无味。衣带渐宽终不悔,为伊消得人憔悴",
    "title": "蝶恋花",
    "author": "柳永"
  },
  {
    "poetry_content": "槛菊愁烟兰泣露,罗幕轻寒,燕子双飞去。明月不谙离恨苦,斜光到晓穿朱户。昨夜西风凋碧树,独上高楼,望尽天涯路。欲寄彩笺兼尺素。山长水阔知何处?",
    "title": "蝶恋花",
    "author": "晏殊"
  },
  {
    "poetry_content": "世情薄,人情恶,雨送黄昏花易落。晓风干,泪痕残。欲笺心事,独语斜阑。难,难,难!人成各,今非昨,病魂常似秋千索。角声寒,夜阑珊。怕人寻问,咽泪装欢。瞒,瞒,瞒",
    "title": "钗头凤",
    "author": "唐婉 "
  },
  {
    "poetry_content": "怒发冲冠,凭阑处、潇潇雨歇。抬望眼、仰天长啸,壮怀激烈。三十功名尘与土,八千里路云和月。莫等闲、白了少年头,空悲切。靖康耻,犹未雪;臣子恨,何时灭。驾长车踏破、贺兰山缺。壮志饥餐胡虏肉,笑谈渴饮匈奴血。待从头、收拾旧山河,朝天阙。",
    "title": "满江红",
    "author": "岳飞"
  },
  {
    "poetry_content": "凌波不过横塘路,但目送、芳尘去。锦瑟华年谁与度?月桥花院,琐窗朱户,只有春知处。飞云冉冉蘅皋暮,彩笔新题断肠句。试问闲愁都几许?一川烟草,满城风絮,梅子黄时雨。",
    "title": "青玉案",
    "author": "贺铸"
  },
  {
    "poetry_content": "留春不住,费尽莺儿语。满地残红宫锦污,昨夜南园风雨。小怜初上琵琶,晓来思绕天涯。不肯画堂朱户,春风自在杨花。",
    "title": "清平乐",
    "author": "王安国"
  },
  {
    "poetry_content": "几日行云何处去?忘了归来,不道春将暮。百草千花寒食路,香车系在谁家树?泪眼倚楼频独语。双燕来时,陌上相逢否?撩乱春愁如柳絮,依依梦里无寻处。",
    "title": "蝶恋花",
    "author": "欧阳修"
  },
  {
    "poetry_content": "一曲新词酒一杯,去年天气旧池台。夕阳西下几时回?无可奈何花落去,似曾相识燕归来,小园香径独徘徊。 ",
    "title": "浣溪沙",
    "author": "晏殊"
  },
  {
    "poetry_content": "梦后楼台高锁,酒醒帘幕低垂。去年春恨却来时,落花人独立,微雨燕双飞。记得小苹初见,两重心字罗衣。琵琶弦上说相思,当时明月在,曾照彩云归。",
    "title": "临江仙",
    "author": "晏几道"
  }
]

index.html文章来源地址https://www.toymoban.com/news/detail-472024.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <title>绝美宋词</title>
  <link rel="stylesheet" href="css/style.css" />
  <script src="./js/vue.min.js"></script>
  <script src="./js/axios.min.js"></script>
</head>

<body>
  <div id="app">
    <h1 style="text-align: center">输入关键字,找一首词</h1>
    <!-- TODO:待补充代码 -->
    <div class="search-form">
      <input type="text" id="search" class="search" placeholder="词牌名 词句 词人"/>
      <ul class="suggestions">
      </ul>
    </div>
  </div>
  <script>
    let vm = new Vue({
      el:'#app',
      // TODO:待补充代码
    })
  </script>
</body>

</html>

五、踩坑

  1. 高亮替换时 本来想用filters过滤 , 但filters获取data中的数据时,this指向不再是vm,所以此时可以通过传参的形式获取 比如要获取data中的search,那么可以直接{{xxx|filterName(search)}}
  2. 使用filters过滤时使用replace方法替换高亮词的时候是以字符串的形式,而不是html形式

六、完成


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>绝美宋词</title>
    <link rel="stylesheet" href="css/style.css" />
    <script src="./js/vue.min.js"></script>
    <script src="./js/axios.min.js"></script>
  </head>

  <body>
    <div id="app">
      <h1 style="text-align: center">输入关键字,找一首词</h1>
      <!-- TODO:待补充代码 -->
      <div class="search-form">
        <input
          type="text"
          id="search"
          class="search"
          v-model="search"
          placeholder="词牌名 词句 词人"
        />
        <ul class="suggestions">
          <!-- 每一首完整词句用一个 li 包裹 -->
          <li v-for="item in filterList">
            <span v-html="hightLight(item.poetry_content)" class="poet"></span>
            <span class="title">
              <span v-html="hightLight(item.title)"></span>
              -
              <span v-html="hightLight(item.author)"></span>
            </span>
          </li>
        </ul>
      </div>
    </div>
    <script>
      let vm = new Vue({
        el: "#app",
        // TODO:待补充代码
        data() {
          return {
            list: [],
            search: "",
          };
        },
        mounted() {
          this.getData();
        },
        computed: {
          //高亮
          hightLight() {
            return (text) => {
              if (this.search) {
                const reg = new RegExp(this.search, "gi");
                return text.replace(
                  reg,
                  `<span class='highlight'>${this.search}</span>`
                );
              }
              return text;
            };
          },
          filterList() {
            let { search, list } = this;
            // search &&
            //   (list = list.filter((item) => {
            //     return (
            //       item.title.includes(search) ||
            //       item.author.includes(search) ||
            //       item.poetry_content.includes(search)
            //     );
            //   }));
            // return list;
            //简化版
            return search
              ? list.filter(
                  (item) =>
                    item.title.includes(search) ||
                    item.author.includes(search) ||
                    item.poetry_content.includes(search)
                )
              : [];
          },
        },
        methods: {
          //获取数据
          async getData() {
            const res = await axios({ url: "./data.json" });
            this.list = res.data;
          },
        },
      });
    </script>
  </body>
</html>

到了这里,关于javaScript蓝桥杯----绝美宋词的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript蓝桥杯------学海无涯

    小蓝最近一直在云课平台学习,为了更好的督促自己,于是将每天的学习时间都记录了下来,但是如何更加直观的显示学习时间让小蓝很是苦恼。本题需要你使用 ECharts 帮助小蓝实现统计学习时间图表。 本题已经内置了初始代码,打开实验环境,目录结构如下: 其中: ind

    2024年02月07日
    浏览(23)
  • javaScript蓝桥杯-----宝贵的一票

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

    2024年02月07日
    浏览(25)
  • 两宋词人Top10排排座

    苏轼,站在宋词巅峰的男人。他豪放词和婉约词双修,都达到了极高的境界。他的极品词篇有 18 首,是毫无疑问的 “ 宋词第一人 ” 。 苏轼水平最高的 3 首词如下: 《定风波 莫听穿林打叶声》 莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。

    2023年04月27日
    浏览(25)
  • 柳永8首绝美词句

    他是白衣卿相,是才子词人。 他有傲人的才华,却仕途失意。 他眠花宿柳,写下流传千古的词章。 他是才子 柳永 。   今天,给大家介绍他的8首词, 体会柳永的人生起伏。 寒蝉凄切,对长亭晚,骤雨初歇。都门帐饮无绪,留恋处,兰舟催发。执手相看泪眼,竟无语凝噎。

    2023年04月26日
    浏览(16)
  • 202320读书笔记|《宋词》——竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生

    《宋词》韩震主编,偶然从书友那加入书架的书。宋词挺喜欢李清照的词以及知否的《菩萨蛮》。诗集,词,俳句,短歌我都很喜欢,是轻松有趣又简短的。这本书里有一些是上学时候背过的,看到的时候感觉很亲切。 很喜欢苏轼的《蝶恋花》、《定风波》、《浣溪沙》。

    2024年02月10日
    浏览(27)
  • 8千多古诗词唐诗宋词鉴赏ACCESS\EXCEL数据库

    虽然已经有很多诗词类的数据库,最近又再次找了一下古诗词类的数据,又发现了一些,可是真的是各有各的优点,各有各的特色,之后不再重找诗词类的数据了。 今天这个诗词鉴赏数据也不错,有分类TAG,也有译文、注释、品析、朝代,但是又有些不足,详见下面说明:

    2024年02月06日
    浏览(31)
  • 【AI绘画】绝美春天插画,人人都是插画师

    春天,自然界重新苏醒,生机勃勃,百花争艳,万籁俱寂。一切都被新的生命活力所染上。春风拂面,一股清新的空气流过,仿佛带着一种神秘的力量,让人心旷神怡,心情舒畅、轻松愉悦。 突然,一股灵感爬进脑海,我连忙打开电脑,进入 APISpace ,使用 AI作画(图像生成

    2024年02月09日
    浏览(28)
  • 【计蒜客-算法】蓝桥杯介绍

    蓝桥杯是工信部组织的一项面向在校大学生的程序设计竟赛,分为软件组和电子组。 其中,软件组分为 C/C++组和 Java组,电子组分为嵌入式组和单片机组。 竞赛分为两个阶段:初赛(省赛) 和决赛。初赛时长4个小时,一共两个方向共计6个组别同时比赛。决赛时长也为4小时

    2024年02月05日
    浏览(18)
  • 【AIGC】电影风格的一组绝美高清图提示词解析

    女人主角,以时尚电影风格为灵感,追求照片般的逼真度,运用伦勃朗式光线,创造奇幻且细节丰富的场景,充满象征意义,使用3D渲染技术达到8K超高清晰度。 分类 相关信息 主角 女人 风格 时尚电影风格 逼真度 追求照片般的逼真度 光照效果 伦勃朗式光线 场景 奇幻且细节

    2024年02月22日
    浏览(21)
  • 没有什么壁纸比这里的更绝美精致了吧,我一天换一张

    嗨,这里是清安,本章来学习学习获取精美壁纸。 视频教程:https://b23.tv/iR7bOFF 源码:https://gitee.com/qinganan_admin/reptile-case/tree/master/%E5%A3%81%E7%BA%B8 本视频还会有第二期,代码也会有第二份,第一份代码依旧保存。但是操作内容本章会全部写完。 废话不多说,先看壁纸,再看步

    2023年04月16日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包