建站极客
网络编程 JavaScript 正文
用JavaScript 处理 URL 的两个函数代码
所属分类:
网络编程 / JavaScript
阅读数:
1640
收藏 0
赞 0
分享
function request(paras){ //获取 url 的参数值,不区分大小写,如无此参数,返回空字符串. var url = location.href; var paraString = url.substring(url.indexOf("?")+1,url.length).split("&"); var paraObj = {} for (i=0; j=paraString[i]; i++){ paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length); } var returnValue = paraObj[paras.toLowerCase()]; if(typeof(returnValue)=="undefined"){ return ""; }else{ return returnValue; } } function redirect(){ //第一个参数是当前url,如 http://localhost/demo.asp?xxx=zzz, 第二个及以后的参数形式必须为 xxx=yyy, mm=bbbbb 最终跳转url为 http://localhost/demo.asp?xxx=yyy&aaa=bbb if (arguments.length==1){ location.href = arguments[0]; return; }else{ var paraObj = {}; if (arguments[0].indexOf("?")!=-1){ var curUrlParas = arguments[0].substring(arguments[0].indexOf("?")+1,arguments[0].length).split("&"); for (i=0; j=curUrlParas[i]; i++){ paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length); } } for (i=1; j=arguments[i]; i++){ paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length); } var newURL= ""; for (key in paraObj){ newURL += key+"="+paraObj[key]+"&"; } if (arguments[0].indexOf("?")!=-1){ newURL = arguments[0].substring(0,arguments[0].indexOf("?")+1)+newURL.substring(0,newURL.length-1); }else{ newURL = arguments[0]+"?"+newURL.substring(0,newURL.length-1); } location.href = newURL; return; } } 第二个函数redirect如果只有一个参数时,就是简单的重定向,当有2个或以上的参数时,就能动态指定目的url,该函数可用于翻页功能,比如 redirect("http://www.xxx.com/list.asp?page=1","page="+parseInt(request("page"))+1),还可用于url类型的搜索,如:redirect("http://www.xxx.com/search.asp","range="+escape($("range").value),"keyword="+escape($("keyword").value)),url的操作变得简单起来。 redirect 的核心是建立一个url参数表(hash table),函数的第二个及以后的参数都是添加到该hash table中,最后把该表序列化为目的url。 刚发完日志,就想到可以再改进一下,增加一个参数,决定是否用新窗口打开目的url。 /* 第一个参数是当前url,如 http://localhost/demo.asp?xxx=zzz, 第二个及以后的参数形式必须为 xxx=yyy, mm=bbbbb 最终跳转url为 http://localhost/demo.asp?xxx=yyy&aaa=bbb */ function redirect(){ if (arguments.length==0){ return; } if (arguments.length==1){ location.href = arguments[0]; return; }else if(arguments.length==2){ (arguments[1]==true)?window.open(arguments[0]):location.href = arguments[0]; return; }else{ var paraObj = {}; if (arguments[0].indexOf("?")!=-1){ var curUrlParas = arguments[0].substring(arguments[0].indexOf("?")+1,arguments[0].length).split("&"); for (i=0; j=curUrlParas[i]; i++){ paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length); } } for (i=2; j=arguments[i]; i++){ paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length); } var newURL= ""; for (key in paraObj){ newURL += key+"="+paraObj[key]+"&"; } if (arguments[0].indexOf("?")!=-1){ newURL = arguments[0].substring(0,arguments[0].indexOf("?")+1)+newURL.substring(0,newURL.length-1); }else{ newURL = arguments[0]+"?"+newURL.substring(0,newURL.length-1); } arguments[1]==true?window.open(newURL):location.href = newURL; return; } } 根据昨天临下班前的想法,再修改一下,把第二个参数放到最后面去。 /* Use Age: redirect(url,[paras_1],[paras_2],...,[paras_n],[newWin]) paras_n: url参数,形式如 page=1 或 type=news 等。 newWin: 函数的最后一个参数,布尔类型,为true时,用新窗口(window.open)打开url,否则用当前窗口(location.open)打开。默认值为 false。 Example: redirect("http://www.google.com/search","q=hello","start=20",true); //将在google搜索"hello",并翻到第3页,并用新窗口打开。 redirect("http://www.xxx.com/listpage.asp","page="+parseInt(request("page"))+1); //翻页功能中的“下一页”。 */ function redirect(){ if (arguments.length==0){ return; } if (arguments.length==1){ location.href = arguments[0]; return; }else if(arguments.length==2 && typeof(arguments[1])=="boolean"){ (arguments[1]==true)?window.open(arguments[0]):location.href = arguments[0]; return; }else{ var paraObj = {}; if (arguments[0].indexOf("?")!=-1){ var curUrlParas = arguments[0].substring(arguments[0].indexOf("?")+1,arguments[0].length).split("&"); for (i=0; j=curUrlParas[i]; i++){ paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length); } } var j = arguments.length; for (i=1; i if (typeof(arguments[i])=="boolean"){ break; } paraObj[arguments[i].substring(0,arguments[i].indexOf("=")).toLowerCase()] = arguments[i].substring(arguments[i].indexOf("=")+1,arguments[i].length); } var newURL= ""; for (key in paraObj){ newURL += key+"="+paraObj[key]+"&"; } if (arguments[0].indexOf("?")!=-1){ newURL = arguments[0].substring(0,arguments[0].indexOf("?")+1)+newURL.substring(0,newURL.length-1); }else{ newURL = arguments[0]+"?"+newURL.substring(0,newURL.length-1); } if(typeof(arguments[length-1])=="boolean" && arguments[length-1]==true){ window.open(newURL); }else{ location.href = newURL; } return; } }
纯javascript判断查询日期是否为有效日期 很多网站都涉及到输入日期选项,如果客户日期输入错误,可能导入查询不到甚至查询到错误的信息,为了更好的满足用户需求,需要对日期进行校验,下面给大家介绍使用纯javascript如何判断查询日期是否为有效日期,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
jquery实现的蓝色二级导航条效果代码 这篇文章主要介绍了jquery实现的蓝色二级导航条效果代码,涉及jquery鼠标事件及页面样式的动态切换效果实现技巧,非常简单实用,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
ajax如何实现页面局部跳转与结果返回 AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新,本篇文章给大家介绍ajax如何实现页面局部跳转与结果返
评论 0
收藏 0
赞 0
分享
js实现的黑背景灰色二级导航菜单效果代码 这篇文章主要介绍了js实现的黑背景灰色二级导航菜单效果代码,涉及javascript操作页面元素动态切换的实现技巧,非常具有实用价值,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
javascript中SetInterval与setTimeout的定时器用法 Javascript的setTimeOut和setInterval函数应用非常广泛,它们都用来处理延时和定时任务,比如打开网页一段时间后弹出一个登录框,页面每隔一段时间发送异步请求获取最新数据等,本文文章通过代码示例给大家介绍javascript中SetInterval与setT
评论 0
收藏 0
赞 0
分享
jQuery实现的背景动态变化导航菜单效果 这篇文章主要介绍了jQuery实现的背景动态变化导航菜单效果,涉及jquery页面元素背景动态变换的实现技巧,非常具有实用价值,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
查看更多