一个站内搜索功能,有点像用Ctrl+F那样!!

danjingwu 2005-03-07 12:10:24
现在我有一张静态页面(html文件),里面列了无数的人员,现在我想做一个搜索输入框,希望实现以下的功能
1。在输入框里面输入关键字,然后可以在静态页面中,自动找到,并反对搜索到的项。(和在网页里用Ctrl+F搜索的效果一样)
2。可以从其他页搜索,然后转到该静态页面,并反白该关键字!!

请做过类似功能的高手过两招给小弟,谢谢!!!
...全文
264 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
静态页面比较简单,用instr就能找到了

在用一个collection(忘记dhtml中是不是叫这个了,反正在msdn上一查就知道了,做个区域选择就可以了)

其他页搜索的话,你用xmlhttp技术了,做个asp的文本搜索页就是了,一样用instr进行搜索不过很慢,最好还是用做个索引表比较好
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/methods/createelement.asp

教程是说MSDN的网站,你在网站搜索就好了,在method里面,东西是最全的,所以我从来不记的,到时候现查

其他页面的搜索是这样的,算了还是写点儿正确的代码吧

主页面是

url是你的xxx.asp?xx=yy
set xmlhttp1 = CreateObject("Microsoft.XMLHTTP")
xmlhttp1.open "GET",url,false
xmlhttp1.send()
text1=xmlhttp1.responsetext
把text1写到你要显示的地方就可以了,这个就不多写了

xxx.asp中是这样的
theword=request("xx")
set fso=server.createobject("scripting.filesystemobject")
set objTStream=fso.OpenTextFile(你要检查的文件,1)
do while not objTStream.AtEndOfStream
str=str & objTStream.ReadLine
loop
objTStream.close
比如这个页面里你只要<p></p>的内容
wordlen=lenb(theword)
startpos=instrb(str,"<p>")
startpos=startpos+3
endpos=instrb(str,"</p>")
endpos=endpos+4
do while true
thewordpos=instrb(starpos,str,theword,endpos)
if thewordpos<>0 then
finalstr=fianlstr & midb(str,starpos,thewordpos-startpos)
finalstr=fianlstr & "<font color='ffffcc'>" & theword & "</font>" midb(str,thewordpos+thewordlen,endpos-thewordpos-thewordlen)
startpos=instrb(str,"<p>")
if stratpos=0 then
exit
end if
startpos=startpos+3
endpos=instrb(str,"</p>")
endpos=endpos+4
end if
loop

大概的查找就是这个样子了,我中间有逻辑缺失你自己补一下就是了



calmer18 2005-03-07
  • 打赏
  • 举报
回复
test.htm:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
</head>

<body>

<input type=text value='' onkeyup="if(event.keyCode==13){findInPage(this.value);}">
网页内容......
<script language=javascript>
function findInPage(str){var n=0;
txt = window.document.body.createTextRange();
for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
txt.moveStart("character", 1);
txt.moveEnd("textedit");
}
if (found) {
txt.moveStart("character", -1);
txt.findText(str);
txt.select();
txt.scrollIntoView();
n++;
}
else {
alert("抱歉!您要找的内容不存在。");
}
}
var temp,temps
url=location.href;
reg=/\?.*/ //得到网页地址?后面的值
temps=reg.exec(url);
if(temps){
temp=temps[0];
temp=temp.substring(1,temp.length);
findInPage(temp);//执行查找函数}
</script>
</body>
</html>

从其他页传值可以这样:
在要搜索的页地址后面加上 ?要搜索的参数 这样格式的字符
比如上面的页面,我要搜索 "页内" 这个值,就用 test.htm?页内 这样的地址
具体的你可以改改
另:比FORM先执行是因为我在文本框的onkeyup事件中执行了函数
danjingwu 2005-03-07
  • 打赏
  • 举报
回复
TO:philcc(一包中华)
这种办法不支持模糊搜索,并不实用!我需要的是可以想平常的搜索一样的功能,
只是表现方法不同,
一种是搜索数据库,我的是要搜索一个静态页面,并把所有符合条件的字符都凸现出来
philcc 2005-03-07
  • 打赏
  • 举报
回复
看你这么多分,教你个最简单的,是asp和html的结合!
利用表单得到需要查询的人员名,
传值给一个连接(<A HREF="#人员名(传过来的)">)该步骤可设为自动执行
在人员名前加:<A NAME="人员名"></A>人员名

ok
  • 打赏
  • 举报
回复
createTextRange我说的是这个函数,偶会用,不过我都是查MSDN才能想起来的

而且我用的是vbs做查询的
showliz 2005-03-07
  • 打赏
  • 举报
回复
从网上下载个ASP版的站内查询程序套上去就行啦。
danjingwu 2005-03-07
  • 打赏
  • 举报
回复
TO:calmer18(FF)
你这个在本页测试是可以成功的,请问如果要从其他页传值进来,该怎么做啊
我发现你这个会比form标签先执行啊!
sharing 2005-03-07
  • 打赏
  • 举报
回复
帮忙顶
calmer18 2005-03-07
  • 打赏
  • 举报
回复
楼上说的糊里糊涂.....
<script language=javascript>
function findInPage(str){
var n=0;
txt = window.document.body.createTextRange();
for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
txt.moveStart("character", 1);
txt.moveEnd("textedit");
}
if (found) {
txt.moveStart("character", -1);
txt.findText(str);
txt.select();
txt.scrollIntoView();
n++;
}
else {
alert("抱歉!您要找的内容不存在。");
}
}
</script>
<body>
<input type=text value='' onkeyup="if(event.keyCode==13){findInPage(this.value);}">
网页内容.........
</body>

这个在IE下测试通过
在Windows 10或Windows 11操作系统中,用户经常会遇到共享打印机时出现的一系列错误代码,这些错误代码可能会阻碍打印机共享功能的正常使用。常见的错误代码包括0x00000057、0x00000709和0x0000011b,这些代码通常指出了不同的问题,比如权限不足、服务未运行或配置错误等。除此之外,还有一些故障提示如“连接失败”或“内存不足”,这些都可能影响到打印机共享的稳定性。 要解决这些故障,首先要确保打印机已经正确地连接到网络,并且在需要共享的电脑上进行了设置。确保打印机驱动程序是最新的,并且在共享设置中没有错误配置。对于权限问题,需要检查网络上的用户账户是否具有足够的权限来访问共享打印机。同时,也要确保打印机服务正在运行,特别是“Print Spooler”服务,因为这是打印机共享服务的核心组件。 在某些情况下,问题可能与操作系统的更新有关,如升级到最新版的Windows 10或Windows 11后可能出现的兼容性问题。这时,可能需要查看微软的官方支持文档来获取特定的解决方案或更新。 对于错误代码0x00000057,这通常是由于没有足够的权限来访问网络打印机或其共享资源,解决方法是确保网络打印机的权限设置正确,包括在组策略中设置相应的访问权限。而0x00000709错误可能是由于打印机驱动问题或打印机端口配置错误,可以尝试重新安装或更新打印机驱动来解决。至于0x0000011b错误,这往往是因为打印机队列服务的问题,检查并重启“Print Spooler”服务通常是解决这类问题的常见手段。 至于“连接失败”或“内存不足”这类故障,通常与客户端和打印机之间的网络连接以及打印机本地资源的使用情况有关。检查网络连接,确保打印机所在的网络段没有故障或中断。同时,如果打印机的打印队列长时间得不到处理,可能会导致内存不足的情况,这时可能需要清理打印队列或增加打印机的内存配置。 为了帮助用户更快速地解决这些问题,市面上出现了各种打印机共享错误修复工具。这些工具往往通过预设的修复程序来自动检测和修正打印机共享中常见的问题。它们可以快速检查打印机驱动、网络连接以及共享设置,并且能够提供一键修复功能,大幅减少了用户自行排查和解决问题的难度。 然而,在使用这些修复工具之前,用户应确保这些工具的来源是安全可靠的,避免因使用不当的修复工具而引发其他系统安全或隐私问题。用户可以到官方平台或者信誉良好的软件提供商处下载这些工具。通过细心检查打印机的共享设置,及时更新驱动程序和服务,以及合理使用修复工具,大多数共享打印机的问题都可以得到有效的解决。

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧