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数据来做的模糊查询功能相关推荐

  1. Javascript 处理 JSON 数据 示例

    最近做了一个 MEAN stack 的 app .后台用 NodeJS 从 Jira rest api 获得JSON数据并做处理,然后前端用 AngularJS Ajax call 获得处理后的 JS ...

  2. JavaScript 解析 JSON 数据

    JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON ...

  3. java json csv_彻底理解使用JavaScript 将Json数据导出CSV文件

    前言 将数据报表导出,是web数据报告展示常用的附带功能.通常这种功能都是用后端开发人员编写的.今天我们主要讲的是直接通过前端js将数据导出Excel的CSV格式的文件. 原理 首先在本地用Excel ...

  4. JavaScript解析JSON数据

    1. json字符串转化为json对象 可以通过JavaScript的eval()函数来进行解析,代码如下: <script type="text/javascript"&g ...

  5. javascript通过json数据按格式生成一个按字母分类排序的分类信息表

    效果图如下 1.json数据格式 var _people=[{name:'朱瑞',url:'aaaaaa',nick:'zhu'},{name:'刘桂清',url:'aaaaa',nick:'liu' ...

  6. javascript将JSON数据导出为Excle表格

    文章目录 方式一:导出json数据 const jsonData = [{name:'路人甲',phone:'123456789',email:'000@123456.com'},{name:'炮灰乙 ...

  7. 纯JavaScript 实现JSON数据导出到Excel(支持多个Sheet页)

    核心思想: 拿到JSON 格式的数据后,使用JS逻辑生成符合 EXCEL格式规范的XML字符串 然后转字符串内容把换成一个Blob 实例对象 最后通过 临时创建的一个A标签通过触发它的点击事件模拟浏览 ...

  8. js 解析json数据实现快递包裹的查询

    1,数据接口用的聚合数据的(接口收费,有次数限制,注册免费送100次) 2,此小demo使用了,js,jQuery,和json数据 3效果图 4.实现代码 注意!,jQuery的js文件自己引入,还有 ...

  9. scala学习-scala读取Hbase表中数据并且做join连接查询

    1.业务需求:sparkSQL on hbase ,sparkSQL直接读取Hbase中的两个表,进行连接查询. 2.图示 绿色的线 上图中绿色的线是做过测试的,直接在hive中建表,然后load数据 ...

最新文章

  1. 网络营销er每天必做四件事
  2. 450. 删除二叉搜索树中的节点
  3. [iOS]服务器使用php时多图片上传AFNetworking的设置
  4. 前端学习(80):按类型划分标签(inline)
  5. php接口返回一个数组怎末写_php api返回json数组
  6. 数列分块入门 1(LibreOj-6277)
  7. ToolBar控件去除默认的左边距
  8. html3d变形,深入理解CSS变形transform(3d) - 小火柴的蓝色理想
  9. BizTalk开发系列(二十九) 宏的使用
  10. King's Quest - poj 1904(强连通分量+外挂输入输出)
  11. Python 学习笔记:class
  12. 最全最新cpu显卡天梯图_CPU天梯图2020年-2020年最新CPU天梯图(高清大图) - 系统家园...
  13. 【专题复习】极值点 拐点 驻点
  14. php基于微信小程序的医院预约挂号系统 uinapp 计算机毕业设计
  15. Python转换表情符号 emoji
  16. 编程小白学习编程的开始
  17. 游戏运营技术之----运用箱线图分析PCU和DAU(一)
  18. 前端 sqllite sql.js
  19. 高性能分布式缓存Redis(缓存分类 安装 数据类型选择和应用场景 发布订阅 事务 Lua脚本 慢查询日志)
  20. 山沟沟里的技术脱贫:阿里工程师助平武蜂农物联网养蜂

热门文章

  1. python 数组_python之多维数组(一)
  2. CODING 敏捷实战系列课第五讲:敏捷中国史
  3. 从规模化平台工程实践,我们学到了什么?
  4. the bundle at bundle path is not signed using an apple submission certificate
  5. Web入门开发【二】- 网站设计
  6. 都说程序猿自带招黑体质?到底是不是真的?
  7. 页面置换算法的个人心得
  8. 6-2 线性表元素的区间删除
  9. 常用的FTP软件及其优缺点,如何轻松搭建安全稳定的NAS私有云盘?
  10. 机器人玛娜图片_怪兽惨死录:智能机器人:玛娜篇二