通过JS来动态的修改url,实现对url的增删查改


Posted in Javascript onSeptember 01, 2014

虽然可以通过get方式提交post表单等方式来动态修改url,但如果多个按钮能并行提交时,写多个大体相同,又有些细节差异的表单,难免有些不妥,因此,想到了通过JS来动态的修改url,来实现对url的增删查改。

<script>
 
 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||{}));
 
     var myurl=new LG.URL(window.location.href);
     myurl.remove("b"); //删除了b
     alert(myurl.get ("a"));//取参数a的值,这里得到1
     myurl.set("a",23); //修改a的值为23
     alert (myurl.url());
 </script>
Javascript 相关文章推荐
从阿里妈妈发现的几个不错的表单验证函数
Sep 21 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
Feb 23 Javascript
jQuery中unbind()方法用法实例
Jan 19 Javascript
批量下载对路网图片并生成html的实现方法
Jun 07 Javascript
jQuery+ajax实现实用的点赞插件代码
Jul 06 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
Feb 15 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
Mar 21 Javascript
Vue通过ref父子组件拿值方法
Sep 12 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
Dec 09 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
Apr 17 Javascript
node.js文件操作系统实例详解
Nov 05 Javascript
vue中watch的用法汇总
Dec 28 Vue.js
一个不错的仿携程自定义数据下拉选择select
Sep 01 #Javascript
原生javascript实现拖动元素示例代码
Sep 01 #Javascript
使用text方法获取Html元素文本信息示例
Sep 01 #Javascript
textarea不能通过maxlength属性来限制字数的解决方法
Sep 01 #Javascript
超级好用的jQuery圆角插件 Corner速成
Aug 31 #Javascript
Html5的placeholder属性(IE兼容)实现代码
Aug 30 #Javascript
通过js为元素添加多项样式,浏览器全兼容写法
Aug 30 #Javascript
You might like
我用php+mysql写的留言本
2006/10/09 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
Javascript 强制类型转换函数
2009/05/17 Javascript
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
2016/08/24 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
Django 解决由save方法引发的错误
2020/05/21 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
美国珠宝店:Helzberg Diamonds
2018/10/24 全球购物
会计与审计专业大专生求职信
2013/10/03 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
代理人委托书
2014/09/16 职场文书
2019年干货:自我鉴定
2019/03/25 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书
css实现文章分割线样式的多种方法总结
2021/04/21 HTML / CSS
vue动态绑定style样式
2022/04/20 Vue.js
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript