【搜索框的匹配功能】

功能需求:

1. 输入关键字的同时,以下拉列表的形式显示匹配的内容;

2. 点击下拉列表的选项,跳转到对应的新的页面

注意:这里读取data.txt(检索的文件对象),会存在跨域的问题,所以这里启动一个服务器将静态文件挂载到服务器上。

服务器端:通过Node.js的express框架,这里跨域还需要导入cors库。

static.js


const express = require('express')
const app = express()
const cors = require('cors')app.use(cors())
app.use(express.static('.'))  //当前目录挂载到服务器app.listen(3000, () => {console.log('server is running at http://127.0.0.1:3000')
})

命令行启动服务器:

node static.js 

前端静态文件:

搜索页面.html(这里采用的layui框架,所以需要引入layui核心css和js文件)

<!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><!-- css引入 --><link rel="stylesheet" href="css/layui.css"><style>.form-box{width: 600px;margin:100px auto 0;}ul li{line-height: 50px;width: 382px;letter-spacing: 1px;text-indent: 8px;font-size: 12px;font-family:Arial,Helvetica,sans-serif;background-color: #ffffff;border-style:solid;border-width: thin;border-top:none;border-color: #eeeeee;}ul li a{display: block;}ul li:hover{background-color: #e9faff;color: #666;}</style>
</head>
<body><div class="form-box"><form action="" class="layui-form"><div style="width: 500px; float: left;"><label class="layui-form-label" for="">搜索匹配:</label><div class="layui-input-block"><input type="text" class="layui-input" id="search-input" onkeyup="search()" placeholder="请输入"><!-- 搜索结果 --><div id="search-result" style="margin-top:15px"></div></div></div></form></div><!-- 引入js --><script src="js/jquery-1.11.3.min.js"></script><script src="js/layui.js"></script><script src="search.js"></script>
</body>
</html>

search.js

// 定义一个全局变量,用于存储解析出来的数据
var searchData = [];// 解析数据
function parseData(dataText) {//每1行为分隔符号,存放在数组dataArray中var dataArray = dataText.split("\n");for (var i = 0; i < dataArray.length; i++) {// 解析dataArray元素中的每个字符串var item = dataArray[i].split(",");// 新的数组searchData存放的是对象(name + url)searchData.push({name: item[0],url: item[1]});}
}// 搜索功能
function search() {var searchInput = document.getElementById("search-input");var searchResult = document.getElementById("search-result");searchResult.innerHTML = "";//搜索框输入的内容var keyword = searchInput.value.trim().toLowerCase();if (keyword === "") {return;}//搜索匹配//filter(function(item) { return 筛选的条件  })var matchedData = searchData.filter(function(item) {//返回 item对象中 name字符串中含keyword子字符串第一次出现的位置(-1表示没有)return item.name.toLowerCase().indexOf(keyword) !== -1;});//构造前端html中<div id="search-result" style="margin-top:15px">的内容var resultList = document.createElement("ul");matchedData.forEach(function(item) {var resultItem = document.createElement("li");var resultLink = document.createElement("a");//每个item都是一个对象(name + url)resultLink.href = item.url;resultLink.innerHTML = item.name;resultItem.appendChild(resultLink);resultList.appendChild(resultItem);});searchResult.appendChild(resultList);
}// 加载数据并解析
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {if (xhr.readyState === 4 && xhr.status === 200) {parseData(xhr.responseText);}
};
xhr.open("GET", "data.txt");
xhr.send();

运行如下:

 

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

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

相关文章

ImportError: No module named pkg_resources

ImportError: No module named pkg_resources 当使用 pip 命令时&#xff0c;如果出现 ImportError: No module named pkg_resources 错误&#xff0c;通常表示你的 Python 环境中缺少了 setuptools 模块或该模块损坏。 解决此问题的一种方法是重新安装或升级 setuptools 模块…

瞅一眼nginx

目录 &#x1f9ac;什么是nginx? &#x1f9ac;nginx配置官方yum源&#xff1a; &#x1f9ac;nginx优点 &#x1f9ac;nginx 缺点 &#x1f9ac;查看nginx默认模块 &#x1f40c;nginx新版本的配置文件&#xff1a; &#x1f40c;nginx目录索引 &#x1f40c;nginx状态…

Echarts图表Java后端生成Base64图片格式,POI写入Base64图片到Word中

Echarts图表Java后端生成请看上篇&#xff0c;此篇为Base64图片插入Word文档中Java后台生成ECharts图片,并以Base64字符串返回_青冘的博客-CSDN博客 try {XWPFParagraph xwpfParagraphimage doc.createParagraph(); // 创建图片段落xwpfParagraphimage.setAlignment(Paragraph…

【C++】开源:ceres和g2o非线性优化库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍ceres和g2o非线性优化库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&…

IT 基础架构自动化

什么是 IT 基础架构自动化 IT 基础架构自动化是通过使用技术来控制和管理构成 IT 基础架构的软件、硬件、存储和其他网络组件来减少人为干预的过程&#xff0c;目标是构建高效、可靠的 IT 环境。 为什么要自动化 IT 基础架构 为客户和员工提供无缝的数字体验已成为企业的当务…

【网络安全】等保测评系列预热

【网络安全】等保测评系列预热 前言1. 什么是等级保护&#xff1f;2. 为什么要做等保&#xff1f;3. 路人甲疑问&#xff1f; 一、等保测试1. 渗透测试流程1.1 明确目标1.2 信息搜集1.3 漏洞探索1.4 漏洞验证1.5 信息分析1.6 获取所需1.7 信息整理1.8 形成报告 2. 等保概述2.1 …

Nginx代理接口访问返回404

Nginx代理接口访问返回404 一、背景 因为不同业务系统间有接口调用&#xff0c;存在跨域问题&#xff0c;为了解决同源策略&#xff0c;需要将接口通过nginx去转发&#xff0c;但是配置完后通过postman请求一直存在访问404的问题。 访问地址&#xff1a;https://a.test.com/n…

卫星照片(dfs)

题面 农夫约翰总是想要一个农场的地图&#xff0c;所以他拍摄了一张 N 行 M 列的卫星照片。一部分的照片看起来像这样&#xff1a; .................. ..#####.......##.. ..#####......##... .................. #.......###.....#. #.....#####.......他认为每个联通块都是一…

【HarmonyOS】【续集】实现从视频提取音频并保存到pcm文件功能(API6 Java)

【关键字】 视频提取类Extractor、视频编解码、保存pcm文件、getAudioTime 【背景和问题】 上篇中介绍了从视频提取音频并保存到pcm文件功能&#xff0c;请参考文档&#xff1a;https://developer.huawei.com/consumer/cn/forum/topic/0209125665541017202?fid0101591351254…

【深度学习推荐系统】目录

前言 在搜广推等业务场景下做了3年工程&#xff08;主要专注在模型推理方向&#xff09;&#xff0c;最近终于有时间对该领域的知识做个整理&#xff0c;这里做个总的目录&#xff0c;方便以后查找&#xff1b; 后续更新的文章会陆续添到这个目录里来 一、系统架构篇 【深度…

多个excel的sheet合并到一个excel下

目标&#xff1a;多个excel的sheet合并到一个excel下&#xff08;不同sheet&#xff09; 要求&#xff1a;原始数据不同excel中的sheet名不同 import pandas as pd import os# 多个Excel文件所在的文件夹路径 folder_path r"D:\data\sheet"# 输出合并后的Excel文件…

元宇宙3D数字虚拟客服打造年轻化、数字化营销新品牌

融合了元宇宙、AI和云计算等技术的虚拟数字人&#xff0c;成为元宇宙数字内容交互的载体&#xff0c;将现实世界中的人与虚拟数字世界的场景、模型及产品链接起来&#xff0c;特别是为电力企业打造的电力元宇宙平台&#xff0c;带来营销宣传多重好处的同时&#xff0c;树立了数…

TOPIAM 社区版 1.0.0 发布,开源 IAM/IDaaS 企业身份管理平台

文章目录 产品概述系统架构功能列表管理端门户端 技术架构后续规划相关地址 ​Hi&#xff0c;亲爱的朋友们&#xff0c;今天是传统 24 节气中的立秋&#xff0c;秋天是禾谷成熟、收获的季节。经过长时间优化和迭代&#xff0c;TOPIAM 企业身份管控平台也迎来了当下的成长和收获…

现代C++中的从头开始深度学习:【5/8】卷积

一、说明 在上一个故事中&#xff0c;我们介绍了机器学习的一些最相关的编码方面&#xff0c;例如 functional 规划、矢量化和线性代数规划。 现在&#xff0c;让我们通过使用 2D 卷积实现实际编码深度学习模型来开始我们的道路。让我们开始吧。 二、关于本系列 我们将学习如何…

DNS: 使用 Bind 9 配置权威 DNS 服务器

写在前面 分享一些通过 Bind9 配置DNS服务器的笔记博文内容涉及 一个基本的 DNS 权威服务器 配置流程理解不足小伙伴帮忙指正 我承认爱情是空幻的&#xff0c;只有情感才是真实的&#xff0c;是情感在促使我们去追求&#xff0c;使我们产生爱情的真正的美 ----卢梭《爱弥儿》 …

第17章-Spring AOP经典应用场景

文章目录 一、日志处理二、事务控制三、参数校验四、自定义注解五、AOP 方法失效问题1. ApplicationContext2. AopContext3. 注入自身 六、附录1. 示例代码 AOP 提供了一种面向切面操作的扩展机制&#xff0c;通常这些操作是与业务无关的&#xff0c;在实际应用中&#xff0c;可…

Netty框架自带类DefaultEventExecutorGroup的作用,用来做业务的并发

一、DefaultEventExecutorGroup的用途 DefaultEventExecutorGroup 是 Netty 框架中的一个类&#xff0c;用于管理和调度事件处理器&#xff08;EventExecutor&#xff09;的组。在 Netty 中&#xff0c;事件处理是通过多线程来完成的&#xff0c;EventExecutor 是处理事件的基…

数据结构 二叉树(一篇基本掌握)

绪论 雄关漫道真如铁&#xff0c;而今迈步从头越。 本章将开始学习二叉树&#xff08;全文共一万两千字&#xff09;&#xff0c;二叉树相较于前面的数据结构来说难度会有许多的攀升&#xff0c;但只要跟着本篇博客深入的学习也可以基本的掌握基础二叉树。 话不多说安全带系好&…

Elasticsearch3节点集群配置账号密码安全验证

Elasticsearch3节点集群配置账号密码安全验证 ES配置文件 rootnode1:~# grep -Ev "^#|^$" /etc/elasticsearch/elasticsearch.yml cluster.name: es-pre node.name: node1 node.master: true node.data: true path.data: /data/elk/es/data path.logs: /data/elk/…

Python爬虫在用户行为模型构建中的应用与挑战

嗨&#xff0c;大家好&#xff01;作为一名专业的爬虫代理&#xff0c;我今天要和大家分享一些关于爬虫与人类行为分析的知识。在数字化时代&#xff0c;我们每天都在互联网上留下大量的数据痕迹&#xff0c;通过分析这些数据&#xff0c;我们可以理解用户行为、性偏好和需求&a…