搜索框

怎样制作一个可以实现真正可以搜索的搜索框呢?
在这里插入图片描述
首先是html部分:

<!--文本框 ID为myInput  onkeyup 事件会在键盘按键被松开时发生调用js函数 -->
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="搜索...">
<ul id="myUL">  <!--设置无序列表的ID属性-->
    <li><a href="###" class="header">A</a></li>
    <li><a href="###">Adele</a></li>         <!--设置多个列表-->
    <li><a href="###">Agnes</a></li>

    <li><a href="###" class="header">B</a></li>
    <li><a href="###">Billy</a></li>
    <li><a href="###">Bob</a></li>

    <li><a href="###" class="header">C</a></li>
    <li><a href="###">Calvin</a></li>
    <li><a href="###">Christina</a></li>
    <li><a href="###">Cindy</a></li>
</ul>

css 将此部分代码放到 head标签之中 ,会在下面给出

#myInput {
	background-image:url('//www.jq22.com/tp/6368374909440002249842396.png');
	/* 搜索按钮 */
			background-position:10px 12px;
	/* 定位搜索按钮 */
			background-repeat:no-repeat;
	/* 不重复图片*/
			width:100%;
	font-size:16px;
	/* 加大字体 */
			padding:12px 20px 12px 40px;
	border:1px solid #ddd;
	margin-bottom:12px;
}
#myUL {
	/* 移除默认的列表样式 */
			list-style-type:none;
	padding:0;
	margin:0;
}
#myUL li a {       /* 为列表中的超链接定义样式 */
	border:1px solid #ddd;
	/* 链接添加边框 */
			margin-top:-1px;
	background-color:#f6f6f6;
	padding:12px;
	text-decoration:none;    /* 无下划线修饰 */
	font-size:18px;
	color:black;         /* 字体颜色 */
	display:block;    /* 块级样式 */
}
#myUL li a.header {          /* 为列表中的超链接头如 A B C 定义样式 */
	background-color:#e2e2e2;
	cursor:default;     /*透明度设置为默认*/
}
#myUL li a:hover:not(.header) {
	background-color:#eee;    /*鼠标悬停事件,除了header*/
}

js

function myFunction() {
    // 声明变量
    var input, filter, ul, li, a, i;
    input = document.getElementById('myInput');  //根据给定的 id 查找文档元素
    filter = input.value.toUpperCase();      //用于把input获得的字符串转换为大写
    ul = document.getElementById("myUL");
    li = ul.getElementsByTagName('li');  //返回带有指定标签名的对象的集合

    // 循环所有列表,查找匹配项
    for (i = 0; i < li.length; i++) {
        a = li[i].getElementsByTagName("a")[0];  //或取第一个a标签
        if (a.innerHTML.toUpperCase().indexOf(filter) > -1) { //查找a.innerHTML这个字符串里的filter内容,找到了返回filter所在的下标,取值范围是[0,∞),如果找不到,indexOf()就会返回 -1
            li[i].style.display = "";
        } else {
            li[i].style.display = "none";
        }
    }
}

完整代码

<html>
<head>
	<style type="text/css">
	#myInput {
	background-image:url('//www.jq22.com/tp/6368374909440002249842396.png');
	/* 搜索按钮 */
			background-position:10px 12px;
	/* 定位搜索按钮 */
			background-repeat:no-repeat;
	/* 不重复图片*/
			width:100%;
	font-size:16px;
	/* 加大字体 */
			padding:12px 20px 12px 40px;
	border:1px solid #ddd;
	margin-bottom:12px;
}
#myUL {
	/* 移除默认的列表样式 */
			list-style-type:none;
	padding:0;
	margin:0;
}
#myUL li a {
	border:1px solid red;
	/* 链接添加边框 */
	margin-top:-1px;
	background-color:red;
	padding:12px;
	text-decoration:;
	font-size:18px;
	color:blue;
	display:block;
}
#myUL li a.header {
	background-color:#e2e2e2;
	cursor:default;
}
#myUL li a:hover:not(.header) {
	background-color:#eee;
}

	</style>
	<script type="text/javascript">
	function myFunction() {
    // 声明变量
    var input, filter, ul, li, a, i;
    input = document.getElementById('myInput');  //根据给定的 id 查找文档元素
    filter = input.value.toUpperCase();      //用于把input获得的字符串转换为大写
    ul = document.getElementById("myUL");  
    li = ul.getElementsByTagName('li');

    // 循环所有列表,查找匹配项
    for (i = 0; i < li.length; i++) {
        a = li[i].getElementsByTagName("a")[0];
        if (a.innerHTML.toUpperCase().indexOf(filter) > -1) {
            li[i].style.display = "";
        } else {
            li[i].style.display = "none";
        }
    }
}
	</script>
</head>
<body>
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="搜索...">

<ul id="myUL">
    <li><a href="###" class="header">A</a></li>
    <li><a href="###">Adele</a></li>
    <li><a href="###">Agnes</a></li>

    <li><a href="###" class="header">B</a></li>
    <li><a href="###">Billy</a></li>
    <li><a href="###">Bob</a></li><!---->

    <li><a href="###" class="header">C</a></li>
    <li><a href="###">Calvin</a></li>
    <li><a href="###">Christina</a></li>
    <li><a href="###">Cindy</a></li>
</ul>

</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值