重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
关于javascript进行商品搜索的问题
公司主营业务:成都网站设计、网站建设、外贸网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出通河免费做网站回馈大家。
悬赏分:10 - 离问题结束还有 14 天 23 小时
我这里一个网站的高级搜索是用javascript脚本进行匹配的,但是我其中没有看见有连接数据库的代码,它是怎么实现搜索的?请详细回答一下!!感谢.
代码如下:
script language=javascript
var whitespace = " \t\n\r";
function IsWhitespace (s)
{ var i;
if (IsEmpty(s)) return true;
for (i = 0; i s.length; i++)
{ var c = s.charAt(i);
if (whitespace.indexOf(c) == -1) return false;
}
return true;
}
function IsEmpty(s)
{ return ((s == null) || (s.length == 0))}
function IsDate(fDate)
{ var arrDaysInMonth=new Array(12);
arrDaysInMonth[1]=31;
arrDaysInMonth[2]=29;
arrDaysInMonth[3]=31;
arrDaysInMonth[4]=30;
arrDaysInMonth[5]=31;
arrDaysInMonth[6]=30;
arrDaysInMonth[7]=31;
arrDaysInMonth[8]=31;
arrDaysInMonth[9]=30;
arrDaysInMonth[10]=31;
arrDaysInMonth[11]=30;
arrDaysInMonth[12]=31;
if (IsEmpty(fDate))
return true
var NameList=fDate.split("-");
if (NameList.length!=3)
return false
if(!(IsYear(NameList[0])IsMonth(NameList[1]) IsDay(NameList[2])) )
return false
if ( NameList[1]arrDaysInMonth[NameList[1]] )
return false
if((NameList[1]==2)(NameList[2]DaysInFebruary(NameList[0]) ) )
return false
return true
}
function search()
{
var name = document.forms['frmdata'].elements['name'].value;
var auth= document.forms['frmdata'].elements['author'].value;
var manufact=
document.forms['frmdata'].elements['manufacturer'].value;
var smallprice=document.forms['frmdata'].elements['smallprice'].value;
var largeprice=document.forms['frmdata'].elements['largeprice'].value;
var
enabledat= document.forms['frmdata'].elements['enabledate'].value;
var
expiredate=document.forms['frmdata'].elements['expiredate'].value;
if (!IsWhitespace(enabledate))
{
if (!IsDate(enabledate))
{
alert("出厂日期 开始日期格式错误!");
return false;
}
}
if (!IsWhitespace(expiredate))
{
if (!IsDate(expiredate))
{
alert("出厂日期 结束日期格式错误!");
return false;
}
}
var allNotEmpty = (!IsWhitespace(name)) ||
(!IsWhitespace(author)) ||
(!IsWhitespace(manufacturer)) ||
(!IsWhitespace(smallprice)) ||
(!IsWhitespace(largeprice))||
(!IsWhitespace(enabledate)) ||
(!IsWhitespace(expiredate));
if (!allNotEmpty)
{ alert("必需输入一个搜索条件");
return false;
}
...中间类似判断
if((!IsWhitespace(smallprice))(!IsWhitespace(largeprice)))
{
if (parseFloat(smallprice)parseFloat(largeprice))
{
alert("价格范围错误");
return false;
}
}
}
/script
代码:
1 form.htm
起始页面,页面里有查询框。
script language="javascript"
function gosearch(){
if (str.value==""){ alert ("请输入查找的内容!"); return false; }
window.location="query.htm?"+str.value;
}
function getkey(){
if(window.event.keyCode == 13) gosearch();
}
/script
input name="str" type="text" id="str" /
input type="button" name="Button" value="查找" onclick="gosearch()" /
script
str.focus();
document.onkeydown=getkey;
/script
2 query.htm
搜索页面,接收上个页面 传来的参数。
script language="javascript"
var titlearray = new Array(); //关键字数组
var urlarray = new Array(); //超级链接数组
var fitarray = new Array(); //符合要求的数组
/script
script type="text/javascript" src="title.js"/script//加载关键字
script type="text/javascript" src="url.js"/script//加载超级链接
script language="javascript"
var args = window.location.href.split("?");//用问号为间隔,各个参数写入数组args
var target = args[1]; //要找的字符串
for (var i=0; ititlearray.length; i++){
if (titlearray[i].indexOf(target)!=-1){
fitarray.push(i);//将要找的结果写入数组。也可以不用数组,直接显示。
}
}
var resultstr = "";
if (fitarray.length ==0 ){
resultstr += "抱歉,没有找到资料。";
}
for (j in fitarray){
resultstr += "a href=\""+ urlarray [fitarray[j]] +"\" target=\"_blank\""+ titlearray[fitarray[j]]+"
";//结果内容赋值给了resultstr
}
/script
div id="result"/div
script language="javascript"
document.getElementById("result").innerHTML += resultstr;//显示结果内容
/script
3 title.js 关键字文件
titlearray [0] = "keyword1";
titlearray [1] = "keyword2";
titlearray [2] = "keyword3";
url.js 超级链接文件
urlarray [0] = "1.htm";
urlarray [1] = "2.htm";
urlarray [2] = "3.htm";
这两个文件需要下标对应,不能错位。
这里有一个简单的站内搜索功能
SCRIPT language=javascript
!--
function go(formname)
{
var url = ;
formname.method = "get";
if (formname.myselectvalue.value == "1") {
document.search_form1.word.value = document.search_form1.word.value " site:";
}
formname.action = url;
return true;
}
//--
/SCRIPT
form name="search_form1" target="_blank" onsubmit="return go(this)"
input name=word size="30" value="请输入关键字" onMouseOver="this.focus()" onBlur="if (value ==''){value='请输入关键字'}" onFocus="this.select()" onClick="if(this.value=='请输入关键字')this.value=''"
input type="submit" value="搜索"br
INPUT name=myselectvalue type=hidden value=0
INPUT name=tn type=hidden value="sayyes"
INPUT name=cl type=hidden value="3"
INPUT CHECKED name=myselect onclick=javascript:this.form.myselectvalue.value=0; type=radio value=0
FONT color=#0000cc style="FONT-SIZE: 12px"互联网
INPUT name=myselect onclick=javascript:this.form.myselectvalue.value=1; type=radio value=1
FONT color=#ff0000 style="FONT-SIZE: 12px"站内
/form
一、IE浏览器开启JavaScript方法:
1、在IE界面菜单栏中“工具”中选择“Internet选项”。
2、“安全”选项卡中选择“Internet”(蓝色的小地球)。
3、进入“自定义级别”找到“脚本”下的“Java小程序脚本”中进行启用。
二、360浏览器开启JavaScript方法:
1、在360界面菜单栏的“工具”中选择“360安全浏览器选项”。
2、找到“网页设置”选项,在网页设置选项中取消“不支持Java小程序”。设置完成后,重新打开浏览器设置即可生效。
搜索功能有多种实现方式 ,前后端都可以实现
第一种:
页面内搜索(类似CTRL+F),这个可以纯前端完成,直接用js匹配搜索结果,进行隐藏显示或改变颜色等
第二种:
纯后端方案,将搜索的字符串拼接到一个新的url参数后,然后跳转到生成的url上,直接显示新页面搜索结果,如最早的baidu搜索就是一个跳转 ,目前baidu已经不使用这种方式
第三种:
Ajax搜索,需要前后端配合,将关键字发送一个请求到后端,后端需要将结果的数据传给前端,前端根据返回的数据,重新对页面部分进行渲染
CTRL+F不支持正则,这个是浏览器自带的功能,由于正则对于普通用户来说,是很专业的,浏览器一般不会去支持很少有人会用的功能,当然是否支持取决于浏览器厂商的想法