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
Javascript-URL帮助类的更多相关文章
- javascript常用工具类整理(copy)
JavaScript常用工具类 类型 日期 数组 字符串 数字 网络请求 节点 存储 其他 1.类型 isString (o) { //是否字符串 return Object.prototype.to ...
- 玩转JavaScript OOP[2]——类的实现
概述 当我们在谈论面向对象编程时,我们在谈论什么?我们首先谈论的是一些概念:对象.类.封装.继承.多态.对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了 ...
- javascript URL实现简易书签
简介 在HTML中,我们可以将js嵌入到script标签中,可以嵌入到行内代码中,也可以嵌入到src(href)中. 后者称作javascript URL.该方式的URL格式固定:javascript ...
- javascript基础知识-类和模块
在JavaScript中可以定义对象的类,让每个对象都共享这些属性. 在JavaScript中,类的实现是基于其原型继承机制的.如果两个实例都从同一个原型对象上继承了属性,我们就说它们是同一个类的实例 ...
- JavaScript 数据验证类
JavaScript 数据验证类 /* JavaScript:验证类 author:杨波 date:20160323 1.用户名验证 2.密码验证 3.重复密码验证 4.邮箱验证 5.手机号验证 6. ...
- javascript继承(一)—类的属性研究
本篇文章主要针对javascript的属性进行分析,由于javascript是一种基于对象的语言,本身没有类的概念,所以对于javascript的类的定义有很多名字,例于原型对象,构造函数等,它们都是 ...
- JavaScript中创建类,赋值给ajax中的data参数
缘由:因为要给根据是否选中checkbox来动态增加ajax中data的属性(ajax的data属性格式的几种方法,参考http://www.jb51.net/article/46676.htm) d ...
- Javascript学习6 - 类、对象、继承
原文:Javascript学习6 - 类.对象.继承 Javasciprt并不像C++一样支持真正的类,也不是用class关键字来定义类.Javascript定义类也是使用function关键字来完成 ...
- JavaScript时间工具类
/** * JavaScript日期工具类 * @author ZhangLp */ /** * 获取当前月的第一天 */ function getCurrentMonthFirst(){ var d ...
- JavaScript URL传值过程中遇到的问题及知识点总结
JavaScript URL传值过程中遇到的问题及知识点总结 Web系统开发过程中经常用到URL进行传值,刚刚接触时不太会解析,会出现中文乱码问题等. 1.父子页面之间的传值(在一个页面中以加载ifr ...
随机推荐
- Linux字符串截取和处理命令 cut、printf、awk、sed、sort、wc
1. cut [选项] 文件名 -f 列号 #提取第几列(分隔符默认为\t) -d 分隔符 #指定分隔符 例如:cut -f 2 a.txt #截取文件a.txt内容的第二列(列号从1开始) cu ...
- 各大门户网站的css初始化代码
腾讯QQ官网 css样式初始 body,ol,ul,h1,h2,h3,h4,h5,h6,p,th,td,dl,dd,form,fieldset,legend,input,textarea,select ...
- Android Studio 简介及导入 jar 包和第三方开源库方[转]
原文:http://blog.sina.com.cn/s/blog_693301190102v6au.html Android Studio 简介 几天前的晚上突然又想使用 Android Studi ...
- hash 表 | | jzoj 1335 | | 脑残+手残 | | 集合的关系
给定两个集合A.B,集合内的任一元素x满足1 ≤ x ≤ 10^9,并且每个集合的元素个数不大于10^5.我们希望求出A.B之间的关系. 给定两个集合的描述,判断它们满足下列关系的哪一种:A是B的一个 ...
- asp - Session
Session[]就是缓存,默认的类型是Object,就是说无论你把什么值赋给Session[],都是会变成Object类型的数据,空说没用,你也别看技术文献里面生涩的解释,我举个例子吧:比如说页面P ...
- android studio怎么分享项目到Git@OSC托管
鄙人初次发表,如有不妥之处,敬请批评指正 1,安装git. git下载地址:http://git-scm.com/downloads/ 2,在AS 的File->Settings->Ver ...
- SQL SERVER 将表中字符串转换为数字的函数 (详询请加qq:2085920154)
在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:1. convert(int,字段名) 例如:select convert(int,'3')2. cast(字段名 as i ...
- jQuery的ajax问题
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to th ...
- maven下读取资源文件的问题(转)
原文链接:http://shenchao.me/2016/04/20/maven%E4%B8%8B%E8%AF%BB%E5%8F%96%E8%B5%84%E6%BA%90%E6%96%87%E4%BB ...
- C#实现:给定[0-9]数组,求用数组组成的任意数字的最小值
class Program { static void Main(string[] args) { List<, , , , }; c.Sort(); ); Console.WriteLine( ...