如何用JS实现模糊查询功能

我是写的是JSON数据通过请求来获取,实现这个模糊查询功能我只用了indexOf返回数组下标这一种办法。方法不限,下面我只展示这一种方法喽!

indexOf是什么

indexOf是返回指定内容在原字符串中的位置,该方法是从数组的start处或数组的开头中检索,看看是否有对应的元素。如果找到inem就会返回这个item第一次出现的位置,如果找不到就会返回-1。

参数值

item:我们要查找的元素。

start:是可选的整数参数,规定在数组中开始检索的位置。它的取值是0到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。

功能很简单主要就是排序和查找

我们来看功能的需求:

1.点击交易额时数据会从小到大排序

2.再次点击交易额时数据会从大到小排序

3.在输入框内输入我们要查询的内容会立刻做出反应

html代码:

给表单元素绑定了oninput事件

<body><div class="big"><div class="first"><p>序号</p><p>姓名</p><div onclick="nover()"><p>交易额</p></div></div><form id="put" oninput="puts()">查询:<input type="text" /></form><hr /><div class="second"></div></div><script src="js/dim.js"></script></body>

css代码:

* {margin: 0;padding: 0;
}.big {font-family: 宋体;color: azure;width: 50%;height: 800px;margin: 30px;background-color: darkolivegreen;
}.first {font-size: 25px;display: flex;justify-content: space-between;margin-left: 5%;width: 90%;height: 30px;padding-top: 15px;/* background-color: darkseagreen; */
}hr{margin-top: 20px;
}.second{padding-top: 20px;
}.item {display: flex;justify-content: space-between;width: 85%;height: 60px;margin-left: 7%;float: left;
}p {display: block;
}form {margin-top: 15px;margin-left: 65%;
}

JS代码:

let data = [];
// 创建XMLHttpRequest 对象,名为xml
let xml = new XMLHttpRequest();
// 使用open方法指定要请求的地址类型和方式
xml.open("get", "./js/dim.json");
// 使用send方法发送请求
xml.send();
// 绑定onreadystatechange事件,判断rreadState和status的状态
xml.onreadystatechange = function() {// 判断xml的交互流程进行到底四个阶段并且xml响应状态码是200的时候if (xml.readyState == 4 && xml.status == 200) {let text = xml.responseText;// 接收数据,JSON转换使用data = JSON.parse(text);// 调用rander渲染函数rander();}
}
// 获取的是页面上的序号姓名交易额的值
let second = document.getElementsByClassName('second')[0];
// console.log(second);// 渲染函数
// 渲染函数 函数名rander
function rander() {// 创建一个空字符串 名为strlet str = "";// for循环整个data数据for (let i = 0; i < data.length; i++) {// str拼接`结构`str += `<div class="item"><p>${i+1}</p><p>${data[i].name}</p><p>${data[i].jma}</p></div>`}// 用innerHTML的把名字和渲染到second中second.innerHTML = str;
}
rander();// 获取数组指定元素索引的办法
// 数组data.indexof()
let put = document.getElementById('put')[0];
console.log(put);// 查询框
function puts() {let puts = document.getElementById('put')[0].value;let str = '';for (let i = 0; i < data.length; i++) {// 强制转换为字符串(寻找input的框的值的下标(数据的下标的交易量))// 查找的是jma交易量的下标(想要搜索名字还要添加name)来个或者if (String(data[i].jma).indexOf(puts) > -1 || String(data[i].name).indexOf(puts) > -1) {str += `<div class="item"><p>${i+1}</p><p>${data[i].name}</p><p>${data[i].jma}</p></div>`}// 拼接到内容中的secondsecond.innerHTML = str;console.log(String(data[i].jma).indexOf(puts) > -1);}
}// 点击交易额排序// let一个变量给他一个状态
let con = false;
// 交易额点击事件 函数名为nover
function nover() {con = !con;if (con) {// 数据sort排序(函数(a,b))data.sort(function(a, b) {// 注意:// 返回的值应该是aJSON交易额-bJSON交易额// return b.交易额的名字 - a.交易额的名字;return a.jma - b.jma;})} else {data.sort(function(a, b) {return b.jma - a.jma;})}rander();console.log("排序");
}

JSON数据我就不展示了,大家自己随便写一点,主要目的就是为了实现这个功能。当然方法还有很多,我只使用了其中的一种。有其他方法也可以跟我分享一下!

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

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

相关文章

JS实现堆排序

堆排序&#xff08;Heap Sort&#xff09;作为一种高效的排序算法&#xff0c;具有稳定的性能和卓越的时间复杂度。本文将深入研究堆排序的原理、实现方式等。 什么是堆排序 公众号&#xff1a;Code程序人生&#xff0c;个人网站&#xff1a;https://creatorblog.cn 堆排序是一…

按升序输出各个字符串。

编写程序&#xff0c;设计并实现如下功能&#xff1a;从键盘输入多个字符串&#xff0c;按升序输出各个字符串。

从零开始搭建博客网站-----框架页

实现效果如下 发布的功能还没有实现&#xff0c;仅仅实现了简单的页面显示 关键代码如下 <template><div class"layout"><el-header class"header"><div class"logo">EasyBlog</div></el-header><el-c…

Python标准库:copy模块【侯小啾python基础领航计划 系列(十五)】

Python标准库:copy模块【侯小啾python基础领航计划 系列(十五)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

YOLOv8改进有效涨点 | 2023 | SPD-Conv空间深度转换卷积(高效空间编码技术)

一、本文介绍 本文给大家带来的改进内容是SPD-Conv&#xff08;空间深度转换卷积&#xff09;技术。SPD-Conv是一种创新的空间编码技术&#xff0c;它通过更有效地处理图像数据来改善深度学习模型的表现。SPD-Conv的基本概念&#xff1a;它是一种将图像空间信息转换为深度信息…

springboot的常用注解

声明解释这个对象&#xff08;类或者其他&#xff09;组件相关 名称作用Controller用于修饰MVC中controller层的组件SpringBoot中的组件扫描功能会识别到该注解&#xff0c;并为修饰的类实例化对象&#xff0c;通常与RequestMapping联用&#xff0c;当SpringMVC获取到请求时会…

Android多用户初探

参考博文:Android UserManagerService初始化_qluka的博客-CSDN博客 想限制多用户的行为,但是不知默认配置在哪?所以写写。 默认guest用户被限制的行为: ./frameworks/base/services/core/java/com/android/server/pm/UserTypeFactory.javaprivate static Bundle getDefaul…

国产API调试插件:Apipost-Helper

前言 Idea 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展&#xff0c;可以根据开发人员的需要进行定制和扩展&#xff0c;从而提高开发效率,今天我们就来介绍一款…

git 提交时忽略eslint检查

git commit -m “” –no-verify

Halcon深度学习药片检测

1.应用示例思路 (1) 标注数据并获取halcon字典形式的训练数据&#xff1b;(2) 数据预处理&#xff1b; (3) 模型训练&#xff1b;(4) 模型评估和验证&#xff1b;(5) 模型推理。 数据的标注使用labelimg工具&#xff0c;具体的参考以下博文&#xff1a; https://blog.csdn.…

笔记-模拟角频率和数字角频率的关系理解

先建议阅读前人此文&#xff08;点击这里&#xff09;&#xff0c;有助于理解。 模拟频率&#xff1a;f 模拟角频率&#xff1a;Ω 数字角频率&#xff1a;ω 其中&#xff1a;在模拟信号中Ω 2πf 正弦波表示&#xff1a;sin(2πft) sin(Ωt) 数字信号就是离散的&#xff…

深度学习(五):pytorch迁移学习之resnet50

1.迁移学习 迁移学习是一种机器学习方法&#xff0c;它通过将已经在一个任务上学习到的知识应用到另一个相关任务上&#xff0c;来改善模型的性能。迁移学习可以解决数据不足或标注困难的问题&#xff0c;同时可以加快模型的训练速度。 迁移学习的核心思想是将源领域的知识迁…

出现数据库出现没有时间格式的错误,实体类Date类型不对导致时间报错

目录 报错现场解决办法java与mysql中的日期类型及二者的对应关系和使用场景 报错现场 数据库最早时间为2023年1月1日&#xff0c;前端查询后却出现2022年12月31日的数据 数据库时间类型为date swagger接口测试 解决办法 讲until的Date改成sql类的Date&#xff0c;就可以了…

[ 蓝桥杯Web真题 ]-视频弹幕

目录 介绍 准备 目标 效果 规定 思路 解答参考 扩展功能 介绍 弹幕指直接显现在视频上的评论&#xff0c;可以以滚动、停留甚至更多动作特效方式出现在视频上&#xff0c;是观看视频的人发送的简短评论。通过发送弹幕可以给观众一种“实时互动”的错觉&#xff0c;弹幕…

基于STM32的智慧农业项目(物联网专业毕设)附送源码和文档材料+学习路线

文章目录 概要整体架构流程硬件选型软件总体框架技术细节实现效果小结 概要 传统农业存在着产量受到环境因素影响较大的问题&#xff0c;现有的农业监测系统数据太过简单、太过理想化。而随着现代科学的持续发展,一个精准化、自动化的现代智能农产品管理系统将在农业生产中起着…

个人Windows电脑通过Cloudreve+Cpolar搭建PHP云盘系统公网可访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#…

⭐ Unity + ARKIT 介绍 以及 平面检测的实现

在AR插件中&#xff0c;ARKIT是比较特殊的一个&#xff0c;首先他在很多追踪上的效果要比其他的AR插件要好&#xff0c;但是只能在IOS系统设备上运行。 1.首先ARKIT在最新版Unity已经集成在AR Foundation中&#xff0c;那我们就需要ARSession 和ARSessionOrigin这两个重要组件…

【DevOps】Jenkins:配置jenkins 流水线/多分支流水线任务构建成功通知企业微信@相关人(二)

目录 一、调用Kubernetes API二、打包编译三、应用于流水线上一篇文章实现了企业微信通知,但仅仅是Jenkins构建后通知,如果在K8s侧配置了就绪检测和滚动更新,那构建完成并不能代表服务已经发布完成,本篇文章我们就来解决这个问题 一、调用Kubernetes API 我这里使用Golan…

[Ubuntu 20.04] 使用Netplan配置网络静态IP

Netplan 是一个在 Ubuntu 系统中进行网络配置的工具。它提供了一种简单和统一的方式来管理网络配置,包括网络接口、IP 地址、网关、DNS 设置等。 以下是 Netplan 的特点和功能: 声明性配置: Netplan 使用 YAML 文件格式进行网络配置,这使得配置文件更易于阅读和编写。你可以…

netcore swagger 错误 Failed to load API definition

后端接口报错如下&#xff1a; 前端nswag报错如下&#xff1a; 根据网上查询到的资料说明&#xff0c;说一般swagger这种错误都是控制器里有接口代码异常造成的&#xff0c;通常是接口没有加属性Attribute&#xff0c; 比如[HttpPost("Delete")]、[HttpGet("Del…