js原生的url操作函数,完善的。

/*****************************/
/* 动态修改url */
/*****************************/
var LG=(function(lg){
var objURL=function(url){
this.ourl=url||window.location.href;
this.href="";//?前面部分
this.params={};//url参数对象
this.jing="";//#及后面部分
this.init(); } //分析url,得到?前面存入this.href,参数解析为this.params对象,#号及后面存入this.jing
objURL.prototype.init=function(){
var str=this.ourl;
var index=str.indexOf("#");
if(index>0){
this.jing=str.substr(index);
str=str.substring(0,index);
}
index=str.indexOf("?");
if(index>0){
this.href=str.substring(0,index);
str=str.substr(index+1);
var parts=str.split("&");
for(var i=0;i<parts.length;i++){
var kv=parts[i].split("=");
this.params[kv[0]]=kv[1];
}
}
else{
this.href=this.ourl;
this.params={};
}
}
//只是修改this.params
objURL.prototype.set=function(key,val){
this.params[key]=val;
}
//只是设置this.params
objURL.prototype.remove=function(key){
this.params[key]=undefined;
}
//根据三部分组成操作后的url
objURL.prototype.url=function(){
var strurl=this.href;
var objps=[];//这里用数组组织,再做join操作
for(var k in this.params){
if(this.params[k]){
objps.push(k+"="+this.params[k]);
}
}
if(objps.length>0){
strurl+="?"+objps.join("&");
}
if(this.jing.length>0){
strurl+=this.jing;
}
return strurl;
}
//得到参数值
objURL.prototype.get=function(key){
return this.params[key];
}
lg.URL=objURL;
return lg;
}(LG||{}));

应用上面的URL操作函数,获取url及其参数,并在使用前对rul中的中文用jquery自带函数解码。

最后进行赋值等操作。

$(document).ready(function(){
var myurl=new LG.URL(window.location.href); //获取url参数,解码后赋值到select中,实现select防刷新
$("#yewu").val(decodeURIComponent(myurl.get("yewu")));
$("#fuwu").val(decodeURIComponent(myurl.get("fuwu")));
$("#leixing").val(decodeURIComponent(myurl.get("leixing"))); $('.casesel').change(function(){
var p1=$('#yewu').val();//yewu的值
var p2=$('#fuwu').val();//fuwu的值
var p3=$('#leixing').val();//leixing的值
window.location.href="/case/?yewu="+p1+"&fuwu="+p2+"&leixing="+p3;//页面跳转并传参
});
});

最新文章

  1. 【ASP.NET 插件】zyUpload的HTML5上传插件
  2. Windows Phone 7 中拷贝文件到独立存储
  3. 一元线性回归模型与最小二乘法及其C++实现
  4. MySQL内存表的特性与使用介绍 -- 简明现代魔法
  5. 2014牡丹江——Hierarchical Notation
  6. 使用Dism备份和全新恢复系统
  7. Java基础系列--07_String、StringBuffer和StringBuilder
  8. Linux云计算运维-MySQL
  9. 三个线程,ABC 10次(volatile+synchronized(2 synchronized可以保证内存可见性,所以去掉status 的volatile修饰符)
  10. ajax 上传文件,监听进度(progress)
  11. 对KVM虚拟机进行cpu pinning配置的方法
  12. gcc 6.0编译opencv出错
  13. xshell 登陆堡垒机实现自动跳转
  14. 详解管理root用户权限的sudo服务程序
  15. JavaScript代码不执行
  16. Delphi 浏览器WebBrowser
  17. 解决win8/8.1系统安装.net framework 3.5出现0x800F0906代码错误
  18. 在Ubuntu搭建网站环境问题记录
  19. Docker学习记录3: 搭建 Private Registry
  20. this和$(this)的关系

热门文章

  1. LaTeX Software &amp; Manuals
  2. 屌丝逆袭--Asp.net快速入门学习教程 第1晚
  3. Hibernate与Mybatis的概念区别
  4. php empty函数
  5. 浅谈JavaScript原型对象与相关设计模式
  6. System.nanoTime与System.currentTimeMillis的区别
  7. java读写excel文件
  8. 开始使用pycharm了
  9. [原] Android 自定义View 密码框 例子
  10. Backbone☞View中的events...click事件失效