這兩天遇到JS對URL的操作,網上查了很多方法,都是直接操作,使用起來很不方便,還有出現很多重複的代碼。
於是集百家之嚴,總結了各個方法,把它壓縮成了一個函數對象,只有幾十行代碼,使用方法簡單明了
ojbUrl.js
代碼如下 |
複製代碼 |
/* 說明:本代碼可自由複製修改並且使用,但請保留作者資訊! Author: Kevin WebSite: http://iulog.com/ QQ:251378427
JS 操作 URL 函數使用說明: 初始化 var myurl=new objURL(); //也可以自訂URL: var myurl=new objURL('http://www.111cn.net'); 讀取url參數值 var val=myurl.get('abc'); // 讀取參數abc的值 設定url參數 myurl.set("arg",data); // 新增/修改 一個arg參數的值為data 移除url參數 myurl.remove("arg"); //移除arg參數 擷取處理後的URL myurl.url();//一般就直接執行轉跳 location.href=myurl.url(); 調試介面:myurl.debug(); //修改該函數進行調試 */ function objURL(url){ var ourl=url||window.location.href; var href="";//?前面部分 var params={};//url參數對象 var jing="";//#及後面部分 var init=function(){ var str=ourl; var index=str.indexOf("#"); if(index>0){ jing=str.substr(index); str=str.substring(0,index); } index=str.indexOf("?"); if(index>0){ 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("="); params[kv[0]]=kv[1]; } }else{ href=ourl; params={}; } }; this.set=function(key,val){ params[key]=encodeURIComponent(val); }; this.remove=function(key){ if(key in params) params[key]=undefined; }; this.get=function(key){ return params[key]; }; this.url=function(key){ var strurl=href; var objps=[]; for(var k in params){ if(params[k]){ objps.push(k+"="+params[k]); } } if(objps.length>0){ strurl+="?"+objps.join("&"); } if(jing.length>0){ strurl+=jing; } return strurl; }; this.debug=function(){ // 以下調試代碼自由設定 var objps=[]; for(var k in params){ objps.push(k+"="+params[k]); } alert(objps);//輸出params的所有值 }; init(); } |
調用方法
JS 操作 URL 函數使用說明:
代碼如下 |
複製代碼 |
var myurl=new objURL(); //初始化。也可以自訂URL: var myurl=new objURL('http://www.111cn.net'); var val=myurl.get('abc'); // 讀取參數abc的值 myurl.set("arg",data); // 新增/修改 一個arg參數的值為data myurl.remove("arg"); //移除arg參數 myurl.url();//擷取處理後的URL , 一般就直接執行轉跳: location.href=myurl.url(); myurl.debug(); //這是調試介面。修改該函數方法進行調試 |