最近受我的朋友委托用js+HTML做一个像手册一样的程序,里面要有可展开的大纲,模糊查找等功能。我这个人说实在的懒,本来是不愿意的,但想起了父亲以前教我要给朋友搞好关系,再加上这也可以巩固自己的js技术,于是就开始开发这个程序,没想到却出了点小问题,我做的查找只能绝对查找。具体的js代码如下:
function search(){
var arr=new Array("my name","my father name","my brother name","my mother name","my friend name","Bula Bula");
var searchfont=document.getElementById('search').value;
isCon(arr, searchfont);
if(searchfont!="my name" && searchfont!="my father name" && searchfont!="my brother name" && searchfont!="my mother name" && searchfont!="my friend name" && searchfont!="Bula Bula"){
alert('Not found.');
}
}
function isCon(arr, val){
for(var i=0; i<arr.length; i++){
if(arr[i] == val){
if(i==0){
alert('ture.');
}else if(i==1){
alert('ture.');
}else if(i==2){
alert('ture.');
}else if(i==3){
alert('ture.');
}else if(i==4){
alert('ture.');
}else if(i==5){
alert('ture.');
}
}
}
}
/*这个是我做了修改的代码。如果你在html里加入这几行代码:
<input type="text" id="search" value="" />
<input type="button" onclick="search()" value="查找" />
就可以做绝对查找了。感兴趣的朋友可以试试看。*/
虽然我把查找功能做出来了,但这是绝对查找,可不行呀,不光是连答应下来的任务没有完成,还证明了自己技术不过关,于是我开始研究。终于工夫不负有心人,我耗尽了3天的研究时间,终于把这个环节给弄出来了。
接下来我便要开始讲解代码了。
首先来看:
var vData= ["name", "sex", "age", "job", "e-mail"];
这个环节很重要,如果程序运行起来,输入查找时,就是在这里开始查找,改了里面的值也就等于改了搜索出的结果。(说到运行,我不得不感到庆幸,因为js运行是不用编译的,而C/C++就要。但有时不编译也会带来麻烦,比如运行不成功,不知道哪里有错,总之个有长处短处)。
再看代码:
function find(sFind, sObj)
{
var nSize = sFind.length;
var nLen = sObj.length;
var sCompare;
if(nSize <= nLen ){
for(var i = 0; i <= nLen - nSize + 1; i++){
sCompare = sObj.substring(i, i + nSize);
if(sCompare == sFind){
return i;
}
}
}
return -1;
}
这串代码就是核心所在(这个函数是在另一段代码中调用),最令我感到满意的要属巧妙的运用了循环!!首先我取了两个参数的长度,为后面做循环做好铺垫。接下来就是循环出场的时候。
首先,看看这个循环到底怎么回事。我把取出来的参数的长度相减再加1,那么这个循环怎么理解呢?它有什么决定性的作用呢?我给大家举个列子,大家就明白了:
假设将一段文字wertyuik放入前面我提到的数组中的一个元素中,现在要在数组中查ty这几个字,那么前面两组文字的长度相减加1后为7,那要循环7次。如果数组一开始循环,下标是0,变量i也是0,sCompare的就取下标0和下标2(ty长度为2,i的值为0,相加为2)之间的值(xxx.substring用于去两个值之间的值),那么那么示意图可以画为:(^是下标指向的位置,i等于多少下标就取向那里;
^为 i + nSize的位置)
w e r t y u i k
^ ^
这样一来sObj.substring取值的就是we(不算r那位,但要算w那位),然后把取来的给sCompare这个变量,让if()...语句来判断她是否等于sFind(也就是ty这两个字符),不等于就继续循环,一直到等于sFind为止,就返回变量i。
那我给的字符wertyuik中循环4次后就能找出要找的ty两个字符,具体的4次是怎样的过程呢?我们来看下面的示意图:(^是下标指向的位置,i等于多少下标就取向那里;^为 i + nSize的位置)
第一次:
w e r t y u i k
^ ^
(^指向w,
^指向we)
第二次:
w e r t y u i k
^ ^
(^指向e,
^指向t,取e r)
第三次:
w e r t y u i k
^ ^
(^指向e,
^指向y,取rt)
第四次:
w e r t y u i k
^ ^
(^指向t, ^指向u,取ty)
找到,返回i。
这样一个过程就完成了。
接下来的代码我不解释了,下次再写。
后面的调用函数代码如下:
function findEach()
{
var sFind = document.getElementById("input").value;
if(sFind==""){
alert("Can not be empty.");
}
if(sFind!=""){
var nPos;
var vResult = [];
//for(var i = 0; i <= vData.length; i++){
for(var i in vData){
var sTxt=vData[i]||'';
nPos = find(sFind, sTxt);
//nPos=sTxt.indexOf(sFind);
if(nPos>=0){
vResult[vResult.length] = sTxt;
}
}
alert(vResult);
}
}
把上面的代码加上,补上html,就行了。html里加上的代码:
<input id="input" type="text" value="" />
<input id="search" type="button" onclick="findEach()" value="Search" />
然后你还可以做些查询提示,比如能查哪些词呀,使用说明呀。。。(我最喜欢能一目了然看清规则的程序)
这样一来就能查找"name", "sex", "age", "job", "e-mail"里含了哪些字,并能列出有哪些。
(唉,写文章头都写昏了。。。)
上面没解释的代码,就等到下次来给大家解释吧。尽情期待吧!
分享到:
相关推荐
javascript jquery 第一章
在“S2-3使用JavaScript增强交互效果第一章到第三章”的课程中,我们深入探讨了如何利用JavaScript来提升用户的在线体验。 第一章:JavaScript基础 在这个章节,我们将学习JavaScript的基本语法,包括变量声明、...
模糊查找技术是计算机科学中的一种搜索算法,它允许用户输入不完全或部分匹配的查询来查找数据。在实际应用中,比如在搜索引擎、数据库查询、文本编辑器等场景,模糊查找有着广泛的应用。本篇文章将重点讲解如何使用...
在这一章,我们将学习JavaScript的基础语法,包括变量、数据类型、控制结构(如if语句和循环)、函数以及数组。关键知识点是Document Object Model (DOM)的概念,DOM是HTML和XML文档的结构化表示,JavaScript通过DOM...
本“accp5.0JavaScript第五章上机答案”应当包含了上述知识点的具体实践和解答,帮助学员巩固理论知识,提高动手能力。通过解决上机题目,学员能够更好地理解和运用JavaScript,为后续的Web开发打下坚实基础。
"JavaScript电子教案1-12章"涵盖了从基础到进阶的广泛主题,无论是初学者还是有一定经验的开发者,都能从中受益。通过深入学习和实践,你将能够熟练掌握JavaScript,从而创建出交互性丰富的Web应用。
在“javascript循环弹出窗口”这个主题中,我们关注的是如何利用JavaScript代码来实现一个窗口无限循环弹出的功能。这通常涉及到定时器(setTimeout或setInterval)和弹窗函数alert()或confirm()。 首先,`alert()`...
内容结构第一章语言引擎、运行时和调用栈概述第二章如何在V8引擎中写作妈妈代码的5条小技巧第三章内存管理及如何处理4类常见的内存泄漏第四章事件循环及异步编程的出现和5种更好的异步/等待编程方式第五章深入理解...
第1 章 JavaScript 基 础 1.1 关 于JavaScript 1.2 了 解JavaScript 1.3 World Wide Web 1.4 Web 应用程序结构 1.5 JavaScript 与VBScript 第2 章 JavaScript 与HTML 2.6 HTML 基 础 2.7 在HTML 文档中嵌入...
2. **第2章 JavaScript语言基础**:此部分会深入到JavaScript的基础语法,包括变量声明、数据类型(如字符串、数字、布尔值、null和undefined)、操作符、流程控制(如条件语句、循环结构)以及函数的基本用法。...
第1章JavaScript初探 1.1规范和实现相互交织的历史 1.2跨浏览器的不兼容性和其他常见的JavaScript传说 1.3你能用JavaScript来做什么 1.4JavaScript初探:“HelloWorld!” 1.5JavaScript沙箱 1.6可访问性和...
循环是JavaScript代码中常见的结构,但是不恰当的循环设计可能会严重拖慢程序运行速度,甚至导致浏览器出现“脚本失控”的警告。以下是对如何优化JavaScript循环的一些关键点的详细说明: 1. **避免在循环体中执行...
JavaScript 是一种广泛应用于网页开发的编程语言,以下是 JavaScript 的基础知识点总结。 数据类型 在 JavaScript 中,数据类型包括字符串(string)、数值型(number)、布尔型(boolean)、null、undefined 和...
第一章 javascript语言概述 第二章 JavaScript语言基础 第三章 JavaScript事件处理 第四章 JavaScript基于对象编程 第六章 string,math,array等数据对象 第七章 window及相关顶级对象 第八章 document对象
`find`方法用于找出数组中满足条件的第一个元素并返回该元素,如果找不到则返回`undefined`。这在我们需要查找特定元素时非常有用: ```javascript const foundElement = array.find(item => item === 'some...
JavaScript教程的前八章涵盖了从基础到进阶的多种概念,是学习这门语言不可或缺的部分。作为一门广泛应用于网页和互联网应用的脚本语言,JavaScript的重要性不言而喻。在这个《零基础学JavaScript》的教程中,每个...
第一章 JavaScript简介 Javascript 第二章 JavaScript语句和函数 Javascript 第三章 JavaScript常用对象 Javascript 第四章 JavaScript高级对象 Javascript 第五章 文档对象模型 Javascript 第六章 JavaScript事件及...
第一章通常会介绍JavaScript的基本语法,包括变量声明、数据类型(如字符串、数字、布尔值、null和undefined)、操作符(算术、比较和逻辑操作符)以及流程控制(条件语句if...else和switch,以及循环结构如for和...