Javascript-URL帮助类
很久以前写的一个js关于url的帮助类,今天又翻出来了。贴一下源码,做一个简单的教程。
作用
这是一个关于urlquery的一个帮助类,我们在前端编程的时候经常涉及到操作并重组url的情况,在参数比较多的时候操作就比较复杂了。这时候你需要一个帮助类来设置,读取,重组url.
源码
var UrlHelper = function (href) { var url = href.toLowerCase(); var mark = url.indexOf("?"); if (mark < 0) { this.host = url; return this; } this.host = url.substring(0, mark); var paramstr = url.substring(mark + 1); var submark = paramstr.indexOf("?"); if (submark >= 0) { var hold = paramstr.substring(submark + 1); paramstr = paramstr.substring(0, submark); } var paramPairs = paramstr.split("&"); var len = paramPairs.length; var temp; for (var i = len - 1; i--; ) { temp = paramPairs[i].split("="); this.paramSet[temp[0]] = temp[1]; } temp = paramPairs[len - 1].split("="); if (submark >= 0) { var k = {}; this.holdMark = temp[0]; k[temp[0]] = temp[1] + "?" + hold; this.holdKeyPair = k; } else this.paramSet[temp[0]] = temp[1]; }; UrlHelper.prototype = { host: "", paramSet: { }, holdKeyPair: null, holdMark: "", param: function(key) { if (this.holdMark === key) return this.holdKeyPair[key]; return this.paramSet[key]; }, setParam: function(key, value) { if (this.holdMark === key) this.holdKeyPair[key] = value; else this.paramSet[key] = value; return this; }, getUrl: function() { var index = 0; var str = ""; var copy = this.paramSet; for (var items in copy) { str += (items + "=" + copy[items] + "&"); index++; } var temp = this.holdMark; if (temp !== "") { str += (temp + "=" + this.holdKeyPair[temp] + "&"); index++; } if (index) { str = str.substring(0, str.length - 1); return this.host + "?" + str; } return this.host; }, removeParam: function(key) { if (this.holdMark === key) { this.holdMark = ""; this.holdKeyPair = null; return this; } if (this.paramSet[key]) { var k = { }; var temp = this.paramSet; for (var items in temp) { if (items !== key) k[items] = temp[items]; } this.paramSet = k; } return this; } };
实例化
// href ==> http://www.cnblogs.com/licous/admin/EditPosts.aspx?opt=1
var myurlhelper=new UrlHelper(location.href);
实例化需要一个初始地址,一般是location.href.之所以这样设计是因为可能出现不使用该地址的情况。
使用方法
//href==>http://www.cnblogs.com/licous/admin/EditPosts.aspx?opt=1 /* *获取参数*/ var opt=myurlhelper.param("opt"); //opt==> 1 /* *设置一个新参数*/ myurlhelper.setParam("opt1",2); /* *更改一个参数的值*/ myurlhelper.setParam("opt",3); /* *移除一个参数*/ myurlhelper.removeParam("opt");
注意:以上操作都不会实时改变url,所有的这些操作都保存在内存当中,通过以下方法可以获取最终的url
var targerurl=myurlhelper.getUrl(); //targerurl==>http://www.cnblogs.com/licous/admin/EditPosts.aspx?opt1=2