js原生的url操作函数,及使用方法。(附:下边还有jquery对url里的中文解码函数)
2024-10-19 13:35:46
js原生的url操作函数,完善的。
/*****************************/
/* 动态修改url */
/*****************************/
var LG=(function(lg){
var objURL=function(url){
this.ourl=url||window.location.href;
this.href="";//?前面部分
this.params={};//url参数对象
this.jing="";//#及后面部分
this.init(); } //分析url,得到?前面存入this.href,参数解析为this.params对象,#号及后面存入this.jing
objURL.prototype.init=function(){
var str=this.ourl;
var index=str.indexOf("#");
if(index>0){
this.jing=str.substr(index);
str=str.substring(0,index);
}
index=str.indexOf("?");
if(index>0){
this.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("=");
this.params[kv[0]]=kv[1];
}
}
else{
this.href=this.ourl;
this.params={};
}
}
//只是修改this.params
objURL.prototype.set=function(key,val){
this.params[key]=val;
}
//只是设置this.params
objURL.prototype.remove=function(key){
this.params[key]=undefined;
}
//根据三部分组成操作后的url
objURL.prototype.url=function(){
var strurl=this.href;
var objps=[];//这里用数组组织,再做join操作
for(var k in this.params){
if(this.params[k]){
objps.push(k+"="+this.params[k]);
}
}
if(objps.length>0){
strurl+="?"+objps.join("&");
}
if(this.jing.length>0){
strurl+=this.jing;
}
return strurl;
}
//得到参数值
objURL.prototype.get=function(key){
return this.params[key];
}
lg.URL=objURL;
return lg;
}(LG||{}));
应用上面的URL操作函数,获取url及其参数,并在使用前对rul中的中文用jquery自带函数解码。
最后进行赋值等操作。
$(document).ready(function(){
var myurl=new LG.URL(window.location.href); //获取url参数,解码后赋值到select中,实现select防刷新
$("#yewu").val(decodeURIComponent(myurl.get("yewu")));
$("#fuwu").val(decodeURIComponent(myurl.get("fuwu")));
$("#leixing").val(decodeURIComponent(myurl.get("leixing"))); $('.casesel').change(function(){
var p1=$('#yewu').val();//yewu的值
var p2=$('#fuwu').val();//fuwu的值
var p3=$('#leixing').val();//leixing的值
window.location.href="/case/?yewu="+p1+"&fuwu="+p2+"&leixing="+p3;//页面跳转并传参
});
});
最新文章
- 【ASP.NET 插件】zyUpload的HTML5上传插件
- Windows Phone 7 中拷贝文件到独立存储
- 一元线性回归模型与最小二乘法及其C++实现
- MySQL内存表的特性与使用介绍 -- 简明现代魔法
- 2014牡丹江——Hierarchical Notation
- 使用Dism备份和全新恢复系统
- Java基础系列--07_String、StringBuffer和StringBuilder
- Linux云计算运维-MySQL
- 三个线程,ABC 10次(volatile+synchronized(2 synchronized可以保证内存可见性,所以去掉status 的volatile修饰符)
- ajax 上传文件,监听进度(progress)
- 对KVM虚拟机进行cpu pinning配置的方法
- gcc 6.0编译opencv出错
- xshell 登陆堡垒机实现自动跳转
- 详解管理root用户权限的sudo服务程序
- JavaScript代码不执行
- Delphi 浏览器WebBrowser
- 解决win8/8.1系统安装.net framework 3.5出现0x800F0906代码错误
- 在Ubuntu搭建网站环境问题记录
- Docker学习记录3: 搭建 Private Registry
- this和$(this)的关系
热门文章
- LaTeX Software &; Manuals
- 屌丝逆袭--Asp.net快速入门学习教程 第1晚
- Hibernate与Mybatis的概念区别
- php empty函数
- 浅谈JavaScript原型对象与相关设计模式
- System.nanoTime与System.currentTimeMillis的区别
- java读写excel文件
- 开始使用pycharm了
- [原] Android 自定义View 密码框 例子
- Backbone☞View中的events...click事件失效