预览模式: 普通 | 列表

非常好用的Js的querystring类

JavaScript代码
  1. /**  
  2.     Powered By CMSDream Copyright © 2007-2008 All rights reserved.  
  3.     15:10 2008-6-7  
  4. **/  
  5. function querystring(paramstring){   
  6.     this.url=window.location.href;   
  7.     this.params = new Object();   
  8.     this.initialize = function(){   
  9.         if(paramstring.length == 0) return;   
  10.         if(paramstring.substring(0,1)=='?'){   
  11.             paramstring=paramstring.substring(1);   
  12.         }   
  13.         paramstring = paramstring.replace(/\+/g, ' ');   
  14.         var args = paramstring.split('&');     
  15.         for (var i=0;i<args.length;i++){   
  16.             var value;   
  17.             var pair = args[i].split('=');   
  18.             var name = unescape(pair[0]);   
  19.             if (pair.length == 2)   
  20.                 value = unescape(pair[1]);   
  21.             else  
  22.                 value = name;          
  23.             this.params[name] = value;   
  24.         }   
  25.     };   
  26.     this.get = function(key, defvalue){   
  27.         return this.params[key]==null?defvalue:this.params[key];   
  28.     };   
  29.   
  30.     this.setkey = function(key,value){   
  31.         var fragPos = this.url.lastIndexOf("#");   
  32.         var fragment = "";   
  33.         if(fragPos > -1){   
  34.             fragment = this.url.substring(fragPos);   
  35.             this.url = this.url.substring(0,fragPos);   
  36.         }   
  37.         var querystart = this.url.indexOf("?");   
  38.         if(querystart<0){   
  39.             this.url +="?"+key+"="+value;   
  40.         }else if(querystart==this.url.length-1){   
  41.             this.url +=key+"="+value;   
  42.         }else{   
  43.             var Re = new RegExp(key+"=[^\\s&#]*","gi");   
  44.             if (Re.test(this.url)){   
  45.                 this.url=this.url.replace(Re,key+"="+value);   
  46.             }else{   
  47.                 this.url += "&"+key+"="+value;   
  48.             }   
  49.         }   
  50.         return this.url;   
  51.     };   
  52.     this.initialize();   
  53. }  

调用代码:

JavaScript代码
  1. //假设网址为:http://www.a.com/aa.htm?a=value1&b=value2      
  2. var q = new qerystring(location.search);      
  3.      
  4. //如果取不到值用第二个参数作为默认值。      
  5. var a = q.get('a','defaultvalue');       
  6. var b = q.get('b','defaultvalue');      
  7.      
  8. /*    
  9.  运行结果:    
  10.   a=value1    
  11.   b=value2    
  12. */    
  13.   
  14. /***********************************  
  15.  如果要将网址插入一个参数  
  16.  如:http://www.a.com/aa.htm?a=value1&b=value2&page=3  
  17. ************************************/  
  18. var q = new qerystring(location.search);   
  19. var url = q.setkey('page','3');   
  20.   
  21. //url 是所得的结果  
  • 1