js url参数操作插件

// 当前页面url参数操作插件
// Author:Bean
// Date:2014/09/17
;
(function(window, document) {

var UrlParas = function(url) {
return UrlParas.fn.init(url);
}
UrlParas.VERSION = '1.0.0';
UrlParas.fn = UrlParas.prototype = {

url: "",
pathname: "",
paras: "",
init: function(url) {
this.url = url;
this.pathname = url.split("?")[0];
this.paras = this.get();
return this;
},

//以object类型返回url参数及其取值
get: function(option) {
var paraStr, paras,
url = this.url;
if (url) {
paraStr = url.split("?")[1];
if (paraStr) {
paras = {};
paraStr = paraStr.split("&");
for (var n in paraStr) {
var name = paraStr[n].split("=")[0];
var value = paraStr[n].split("=")[1];
paras[name] = value;
}
} else {
return {};
}
if (!option) {
return paras;
} else {
return paras[option] ? paras[option] : "";
}


}
},

//重设url参数取值,若无此参数则进行创建,若参数赋值为null则进行删除
set: function(option) {
var i, name, val;
if (arguments.length == 2) {
name = arguments[0];
val = arguments[1];
option = {
name: val
};
}
if ("string" === typeof option) {
this.paras[option] = "";
} else if ("object" === typeof option) {
for (i in option) {
if (option[i] === null) {
delete this.paras[i];
} else {
this.paras[i] = option[i];
}
}
} else {

}
return this.build();
},

//删除url中指定参数返回新url
remove: function(option) {
var i;
if ("string" === typeof option) {
option = option.split(",");
for (i in option) {
delete this.paras[option[i]]
}

}
return this.build();
},

//根据url和处理过的paras重新构件url
build: function() {
var i,
newUrl = this.pathname + "?";

for (i in this.paras) {
newUrl += (i + "=" + this.paras[i] + "&");
}

return newUrl.substr(0, newUrl.length - 1);
}


}

UrlParas.fn.init.prototype = UrlParas.fn;

window.urlParas = UrlParas;

})(window, document);


//用法示例
testUrl = "http://127.0.0.1/test/urlParas.html?lang=2&tt=22";
console.log(urlParas(testUrl).get());
console.log(urlParas(testUrl).set("test"));
console.log(urlParas(testUrl).set("test", "bean"));
console.log(urlParas(testUrl).set({
"ajax": "ok",
"lang": null,
"test": null
}));
console.log(urlParas(testUrl).set({
zcsdf: "zcsdf",
lang: "zh-cn"
}));
console.log(urlParas(testUrl).remove("lang,tt"));
console.log(urlParas(testUrl).pathname);

// 输出结果
// Object {lang: "2", tt: "22"}
// http://127.0.0.1/test/urlParas.html?lang=2&tt=22&test=
// http://127.0.0.1/test/urlParas.html?lang=2&tt=22&name=bean
// http://127.0.0.1/test/urlParas.html?tt=22&ajax=ok
// http://127.0.0.1/test/urlParas.html?lang=zh-cn&tt=22&zcsdf=zcsdf
// http://127.0.0.1/test/urlParas.html
// http://127.0.0.1/test/urlParas.html

转载于:https://www.cnblogs.com/Beanzone/p/3977565.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值