html中根据姓名模糊查询,JavaScript根据Json数据来做的模糊查询功能
fuzzy_Search: function() {//先找到对应的属性,然后才能继续执行
var newJson = this.jsonB.ModuleList;//先确定所有的input标签
var inputLabel = document.getElementsByClassName("wrap")[0].getElementsByTagName("input");//存储当前input的下电话号码的数据
varcurrentData;//遍历所有的input
for (var i = 0; i < inputLabel.length; i++) {
inputLabel[i].οnclick= function() {//找到了当前被点击input标签的id
var backLabel =show_element(event);
console.log(backLabel);//设置Json树当前节点的变量名
node = null;//设置Json树父级节点的变量名
parentNode = null;//根据获取的id名查找所在当前节点以及父节点的方法
var obj =getNode(newJson, backLabel);
console.log(obj);;//typeData为被查询数据所在数组对应的键名
currentData =obj.node.TypeData;
}
inputLabel[i].addEventListener(‘keyup‘, function() {//创建ul层的函数,通过返回值确定是否继续往下执行
var flag = createSearchUl(currentData, this);if(flag) {//获取创建好的ul层的DOM节点
var oList = document.getElementById("createUl");//设置ul层的属性
oList.setAttribute(‘style‘, ‘position: absolute;left:180px;top:50px;z-index:100;background:#fff;list-style:none;width:71%;cursor:pointer‘);
console.log("找到了Ul", oList);//在input标签中获取输入的值
var keyWord = this.value;//通过searchByRegExp方法获取匹配到的电话号码,返回的是一个数组
var dataList =searchByRegExp(keyWord, currentData);//输入为空或者匹配到的号码为空则删除电话号码ul层
checkCharacter(this, oList, dataList);//把电话号码写在li层,然后添加到ul中
renderData(dataList, oList);//显示被鼠标点击的电话号码
showClickDiv(oList, this);
}
},false);
}//创建一个ul,然后在input标签对应的父级中添加入ul
functioncreateSearchUl(CrData, thisLabel) {if (CrData.length > 0) {if (!(thisLabel.value == ‘‘ || thisLabel.value == ‘null‘ || thisLabel.value ==undefined)) {//找到input标签的父级
var searchDiv =thisLabel.parentNode;//给他的父级做一个相对定位
searchDiv.setAttribute(‘style‘, ‘position: relative‘);//建立一个装电话号码的ul
var iUl = document.createElement("ul");//把ul添加到父级中
searchDiv.appendChild(iUl);//给ul建立一个id
searchDiv.getElementsByTagName("ul")[0].setAttribute(‘id‘, ‘createUl‘);return true;
}else{var UlS = thisLabel.parentNode.getElementsByTagName("ul");//console.log("当前input标签的父级",thisInput.parentNode);
for (var i = UlS.length - 1; i >= 0; i--) {
UlS[0].parentNode.removeChild(UlS[i]);
}return false;
}
}
}//找到被点击元素id的方法
functionshow_element(e) {if (!e) {var e =window.event;
}//获取事件点击元素
var targ =e.target;//获取元素名称
var tname =targ.id;returntname;
}//根据获取的id名查找所在当前节点以及父节点
functiongetNode(json, nodeId) {//1.第一层 root 深度遍历整个JSON
for (var i = 0; i < json.length; i++) {
console.log(json[i].Content);for (var j = 0; j < json[i].Content.length; j++) {if(node) {break;
}var obj =json[i].Content[j];//没有就下一个
if (!obj || !obj.FieldName) {continue;
}//2.有节点就开始找,一直递归下去
if (obj.FieldName ==nodeId) {//找到了与nodeId匹配的节点,结束递归
node =obj;break;
}else{//3.如果有子节点就开始找
if(obj.TypeData1) {//4.递归前,记录当前节点,作为parent 父亲
parentNode =obj;//递归往下找
getNode(obj.TypeData1, nodeId);
}else{//跳出当前递归,返回上层递归
continue;
}
}
}
}//5.如果木有找到父节点,置为null,因为没有父亲
if (!node) {
parentNode= null;
}//6.返回结果obj
return{//父级节点
parentNode: parentNode,//当前节点
node: node
};
}//显示被鼠标点击的电话号码
functionshowClickDiv(oList,thisInput) {var liList = oList.getElementsByTagName("li");
console.log(liList);for (var i = 0; i < liList.length; i++) {
liList[i].οnclick= function() {
console.log(this.innerHTML);//三个实参;1.当前li标签内的内容,2.输入的值;3.当前的ul层
showClickTextFunction(this.innerHTML, thisInput, oList);
}
}
}//输入为空或者匹配到的号码为空则删除电话号码ul层
functioncheckCharacter(thisInput, oList, dataList) {//获取input标签输入的值
var etest =thisInput.value;//为空则删除创建的ul层
if (etest == ‘‘ || etest == ‘null‘ || etest ==undefined) {
oList.parentNode.removeChild(oList);return false;
}//当再次匹配号码为空,则删除所有的ul层
else if (dataList <= 0) {var UlS = thisInput.parentNode.getElementsByTagName("ul");//console.log("当前input标签的父级",thisInput.parentNode);
for (var i = UlS.length-1; i >= 0; i--) {
oList.parentNode.removeChild(UlS[i]);
}
}
}//把电话号码写在li层,然后添加到ul中
functionrenderData(list, oList) {//传进来的list不是数组,就跳出该方法
if (!(list instanceofArray)) {return;
}//设置ul的内容为空
oList.innerHTML = ‘‘;//获取存电话号码数组的长度
var len =list.length;//定义一个变量用来创建li标签
var item = null;//for循环遍历存电话号码的数组,把号码写入创建的li标签中,再添加到ul中
for (var i = 0; i < len; i++) {
item= document.createElement(‘li‘);//为创建的li标签添加class
item.setAttribute("class", "newLi"+i);
item.innerHTML=list[i];
oList.appendChild(item);
}
}//正则匹配
//keyword是输入的值,list是存储数据的数组
functionsearchByRegExp(keyWord, list) {if (!(list instanceofArray)) {return;
}var len =list.length;var arr =[];var reg = newRegExp(keyWord);for (var i = 0; i < len; i++) {//匹配到一个电话号码就存入数组中
if(list[i].phone.match(reg)) {
arr.push(list[i].phone);
}
}returnarr;
}//选中后处理数据
functionshowClickTextFunction(a, b, oList) {
b.value=a;
oList.style.display= "none";
}
}
html中根据姓名模糊查询,JavaScript根据Json数据来做的模糊查询功能相关推荐
- Javascript 处理 JSON 数据 示例
最近做了一个 MEAN stack 的 app .后台用 NodeJS 从 Jira rest api 获得JSON数据并做处理,然后前端用 AngularJS Ajax call 获得处理后的 JS ...
- JavaScript 解析 JSON 数据
JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON ...
- java json csv_彻底理解使用JavaScript 将Json数据导出CSV文件
前言 将数据报表导出,是web数据报告展示常用的附带功能.通常这种功能都是用后端开发人员编写的.今天我们主要讲的是直接通过前端js将数据导出Excel的CSV格式的文件. 原理 首先在本地用Excel ...
- JavaScript解析JSON数据
1. json字符串转化为json对象 可以通过JavaScript的eval()函数来进行解析,代码如下: <script type="text/javascript"&g ...
- javascript通过json数据按格式生成一个按字母分类排序的分类信息表
效果图如下 1.json数据格式 var _people=[{name:'朱瑞',url:'aaaaaa',nick:'zhu'},{name:'刘桂清',url:'aaaaa',nick:'liu' ...
- javascript将JSON数据导出为Excle表格
文章目录 方式一:导出json数据 const jsonData = [{name:'路人甲',phone:'123456789',email:'000@123456.com'},{name:'炮灰乙 ...
- 纯JavaScript 实现JSON数据导出到Excel(支持多个Sheet页)
核心思想: 拿到JSON 格式的数据后,使用JS逻辑生成符合 EXCEL格式规范的XML字符串 然后转字符串内容把换成一个Blob 实例对象 最后通过 临时创建的一个A标签通过触发它的点击事件模拟浏览 ...
- js 解析json数据实现快递包裹的查询
1,数据接口用的聚合数据的(接口收费,有次数限制,注册免费送100次) 2,此小demo使用了,js,jQuery,和json数据 3效果图 4.实现代码 注意!,jQuery的js文件自己引入,还有 ...
- scala学习-scala读取Hbase表中数据并且做join连接查询
1.业务需求:sparkSQL on hbase ,sparkSQL直接读取Hbase中的两个表,进行连接查询. 2.图示 绿色的线 上图中绿色的线是做过测试的,直接在hive中建表,然后load数据 ...
最新文章
- 网络营销er每天必做四件事
- 450. 删除二叉搜索树中的节点
- [iOS]服务器使用php时多图片上传AFNetworking的设置
- 前端学习(80):按类型划分标签(inline)
- php接口返回一个数组怎末写_php api返回json数组
- 数列分块入门 1(LibreOj-6277)
- ToolBar控件去除默认的左边距
- html3d变形,深入理解CSS变形transform(3d) - 小火柴的蓝色理想
- BizTalk开发系列(二十九) 宏的使用
- King's Quest - poj 1904(强连通分量+外挂输入输出)
- Python 学习笔记:class
- 最全最新cpu显卡天梯图_CPU天梯图2020年-2020年最新CPU天梯图(高清大图) - 系统家园...
- 【专题复习】极值点 拐点 驻点
- php基于微信小程序的医院预约挂号系统 uinapp 计算机毕业设计
- Python转换表情符号 emoji
- 编程小白学习编程的开始
- 游戏运营技术之----运用箱线图分析PCU和DAU(一)
- 前端 sqllite sql.js
- 高性能分布式缓存Redis(缓存分类 安装 数据类型选择和应用场景 发布订阅 事务 Lua脚本 慢查询日志)
- 山沟沟里的技术脱贫:阿里工程师助平武蜂农物联网养蜂