虽然可以通过get方式提交post表单等方式来动态修改url,但如果多个按钮能并行提交时,写多个大体相同,又有些细节差异的表单,难免有些不妥,因此,想到了通过JS来动态的修改url,来实现对url的增删查改。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
<script> 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||{})); var myurl= new LG.URL(window.location.href); myurl.remove( "b" ); //删除了b alert(myurl.get ( "a" )); //取参数a的值,这里得到1 myurl.set( "a" ,23); //修改a的值为23 alert (myurl.url()); </script> |