js实现网页搜索框关键字提示

在我们逛网站的时候经常会遇到搜索框之类的,我们在输入想要搜索的内容时,下面会弹出来一些提示,而这样的操作,我们用JavaScript既可以实现,下面我们来讲解一下如何实现的吧!

写这个功能的时候,细节方面比较讲究,稍微不注意点页面就会出现各种不适.
先看一看效果:
这里写图片描述
当我在输入框中输入一个字符,后面就会出现相应的内容。直接点击我们就可以链接到相应的文档区域非常适合站内搜索和导航。
下面我摆出完整的测试代码.

nbsp;html>        Document    

登录后复制    

     var form = document.getElementById(“form”); var input1 = document.forms[“form”][“input1”]; var wrap = document.getElementById(“wrap”); var arr1 = [” 我爱中国”,” 我爱美国”,” 我爱英国”,” 我天生神力”];//数组里面的元素就是我希望在输入宽输入某个字符后在下方出现的搜索字符。 var arr2 = [];//这个数组是为了装入经过筛选和匹配符合要求的arr1中的元素。例如输入值为”我”,arr1中的4个元素都出现。输入”我爱”,则出现前三个。出现的元素都要装入到arr2中方便后面依据数组中的元素创建元素。 input1.oninput = function() {//添加input监控,这样我们可以随时感知输入框值的变化 var val = input1.value;//获取当前输入框的值。 arr2 = [];//使得每次输入框值变化后数组arr2为空。不然每改变一次值就创建一次元素而不删除的话,wrap中添加的元素会越来越多。 /*清掉wrap里面的所有p元素。这里要注意一个问题,很重要。我们在获取wrap内的p元素的时候要注意以下几个问题: 1.getElementsByTagName(“p”);返回的是一个数组而不是一个元素,不能直接通过remove()删除; 2.使用querySelectorAll(“p”)获取p元素,使用for循环删除所有p元素不能按照以下方式写: for (var k = 0; k = 0; k–) { p1[k].remove(); }; 或者不要通过getElementsByTagName(“p”)这种方式获取元素,而是通过querySelectorAll(“p”)就不会出现上面的问题。 */ var p1 = wrap.getElementsByTagName(“p”); // var p1 = wrap.querySelectorAll(“p”); for (var k = p1.length-1; k >= 0; k–) { p1[k].remove(); }; //indexOf用来查看arr1中的每个元素是否包含输入款的字符。包含则返回第一个下标,不包含则返回-1.这里要注意输入框中的值为空时返回的0,输入第一个字符为”我”也返回0,这时如果用(arr1[i].indexOf(val) > -1为条件,输入框为空时也会在wrap内生成p元素。所以我在arr1数组元素字符串第一个位置加一个空格,这样输入第一个字符为”我”返回1,再将条件变为arr1[i].indexOf(val) > 0 for (var i = 0; i 0 ) { // console.log(val); arr2.push(arr1[i]); } //创建元素的循环。在每个创建的元素内添加arr2数组中的字符串。 for (var j = 0; j < arr2.length; j++) { var p = document.createElement("p"); var a = document.createElement("a"); a.innerText = arr2[j]; a.setAttribute("href","http://www.baidu.com"); p.appendChild(a); wrap.appendChild(p); } }

我的编码思路:
1、表单输入框。
2、肯定要对表单输入框的值变化进行监控。通过添加事件oninput
3、怎么出现搜索值而且 它能个输入值练习在一起。

把搜索值放到一个数组中,通过indexOf检索数组中元素是否包含输入框值,将这些值筛选出来.这样就把输入框值和搜索框值联系在一起。

将满足条件的值放到创建的p元素内,在把这个p元素放到wrap中。

4、这时你可能会碰到第一个重大的问题,不断改变输入框的值,wrap中的p元素越来越多,而且是不断的重复。
怎么办?
再建立一个数组,将哪些符合条件都arr1数组 元素放到这个数组内,然后写一个判断,判断每次帅选出来的值是否数组arr2,不属于就添加
这样数组arr2中就不会被添加重复的 元素。
5、然后你会发现为什么元素还是在重复显现。这属于元素残留问题,即没有删除以前的元素。每次变化之后你要删除已经在wrap中创建的元素,否则他们会一直存在。这是使用你要通过getElementsByTagName()来获取元素并移除。
6、这样大致的功能已经完成,接下来就是一些小细节,不过就是这些小细节磨时间。
一个是输入框空值情况也会出现搜索值。arr1[i].indexOf(val)到底是大于0还是-1呢?原来空值返回值也为0,这样也会执行创建元素的代码,所以我在arr1的每个字符串前加了一个空格。
另一个是使用 getElementsByTagName()获取元素要注意的要点,知道很重要,我就是被这个问题卡了很长事件。上面都代码区域有详细讲解。

相关推荐:

javascript搜索自动提示功能的实现

以上就是js实现网页搜索框关键字提示的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2783087.html

(0)
上一篇 2025年3月8日 16:43:58
下一篇 2025年3月8日 16:44:08

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • javaScript容易被忽略的知识点

    这次给大家带来javascript容易被忽略的知识点,javascript容易被忽略知识点的注意事项有哪些,下面就是实战案例,一起来看一下。 1.获取对象所有键: var arr = [‘a’, ‘b’, ‘c’];Object.keys(…

    编程技术 2025年3月8日
    200
  • js函数和变量的提升及闭包讲解

    本文主要和大家分享两个重要的知识点,函数和变量的提升和闭包的原理用法详解,希望能帮助到大家。 函数和变量的提升 原理:就是函数及变量的声明都将被提升到函数的最顶部。 结果:变量和函数都支持先试用后声明 案例: //变量提升x = 5; //…

    编程技术 2025年3月8日
    200
  • JavaScript的数组使用集合

    这次给大家带来javascript的数组使用集合,javascript数组使用集合的注意事项有哪些,下面就是实战案例,一起来看一下。 1.join() 将数组中的所有元素转化为字符串并连接在一起 var a=[1,2,3,4];a.join…

    编程技术 2025年3月8日
    200
  • javaScript使用call和apply

    这次给大家带来javascript使用call和apply,javascript使用call和apply的注意事项有哪些,下面就是实战案例,一起来看一下。 call方法: 语法:call(thisObj,Object) 定义:调用一个对象的…

    编程技术 2025年3月8日
    200
  • JavaScript代码日常注意六点

    大家在日常JavaScript开发中都需要注意一些代码是否会出错,而我们今天来总结一下JavaScript中日常开发需要注意的六点易错部分,相信很多同学都需要来看看哦!废话少说我们直接开始进入正题吧! 立即执行函数 立即执行函数,通常也可作…

    编程技术 2025年3月8日
    200
  • 日常js开发规范

    本篇文章我们来讲一下JavaScript日常开发规范,让大家往后的JavaScript日常开发写出的js代码更规范,感兴趣的同学可以来看看本篇文章!日常开发规范还是很重要的哦! 前端入坑依赖前前后后写了好几个项目,在用javascript写…

    编程技术 2025年3月8日
    200
  • javascript中call详解

    这次给大家带来javascript中call详解,使用javascript中call的注意事项有哪些,下面就是实战案例,一起来看一下。 首先要先了解在函数本身会有一些自己的属性,比如: length:形参的个数; name:函数名; pro…

    编程技术 2025年3月8日
    200
  • javascript中call与apply以及bind有哪些不同

    这次给大家带来javascript中call与apply以及bind有哪些不同,javascript中call与apply以及bind使用的注意事项有哪些,下面就是实战案例,一起来看一下。 首先补充严格模式这个概念,这是ES5中提出的,只要…

    编程技术 2025年3月8日
    200
  • javascript中call与apply的应用

    这次给大家带来javascript中call与apply的应用,javascript中call与apply应用的注意事项有哪些,下面就是实战案例,一起来看一下。 求数组的最大值和最小值 定义一个数组: var ary = [23, 34, …

    编程技术 2025年3月8日
    200
  • 细说VueJS生命周期与钩子函数应用详解

    本篇文章讲述了VueJS的生命周期和其中钩子函数的应用,大家对VueJS的生命周期和其中钩子函数的应用不了解的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧 朋友你好!很幸运的,我的文章能够被你看到,那么此时你应该想对vuejs…

    2025年3月8日
    200

发表回复

登录后才能评论