JS获取地址栏参数,JS获取URL中的参数,修改URL中指定参数

本文介绍了两种在JavaScript中获取URL参数的方法:一是使用正则表达式解析,二是通过传统字符串操作实现。同时还提供了如何替换URL参数的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取:

方法一:采用正则表达式获取地址栏参数:

function GetQueryString(name)
{
     var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
     var r = window.location.search.substr(1).match(reg);
     if(r!=null)return  decodeURI(r[2]); return null;    //decodeURI()是将encodeURI转换的字符转换回来
}

实用举例:

<a href="javascript:openWin('http://www.123.com/zfb_zhifu?money=100&name='+ encodeURI('实名认证'),'实名认证')">
   点击这里实名认证
</a>

可知URL:http://www.123.com/zfb_zhifu?money=100&name=实名认证

在该页面获取money值和name值时,可调用函数GetQueryString(name)

var url_money = GetQueryString(money);
var url_name = GetQueryString(name);
console.log(url_money);//100
console.log(url_name);//实名认证

--------------------------------------分割线------------------------------------

方法二:传统方法

function UrlSearch()
{
   var name,value;
   var str=location.href; //取得整个地址栏
   var num=str.indexOf("?")
   str=str.substr(num+1); //取得所有参数   stringvar.substr(start [, length ]

   var arr=str.split("&"); //各个参数放到数组里
   for(var i=0;i < arr.length;i++){
    num=arr[i].indexOf("=");
    if(num>0){
     name=arr[i].substring(0,num);
     value=arr[i].substr(num+1);
     this[name]=value;
     }
    }
} 

实用举例:

<a href="javascript:openWin('http://www.123.com/zfb_zhifu?money=100&name='+ encodeURI('实名认证'),'实名认证')">
   点击这里实名认证
</a>
var my_url = new UrlSearch();//实例化
console.log(my_url.money);//100
console.log(decodeURI(my_url.name));//实名认证

参考网站:http://www.cnblogs.com/fishtreeyu/archive/2011/02/27/1966178.html

修改:

/* 
* url 目标url 
* arg 需要替换的参数名称 
* arg_val 替换后的参数的值 
* return url 参数替换后的url 
*/ 
function changeURLArg(url,arg,arg_val){ 
    var pattern=arg+'=([^&]*)'; 
    var replaceText=arg+'='+arg_val; 
    if(url.match(pattern)){ 
        var tmp='/('+ arg+'=)([^&]*)/gi'; 
        tmp=url.replace(eval(tmp),replaceText); 
        return tmp; 
    }else{ 
        if(url.match('[\?]')){ 
            return url+'&'+replaceText; 
        }else{ 
            return url+'?'+replaceText; 
        } 
    } 
    return url+'\n'+arg+'\n'+arg_val; 
} 

使用:

changeURLArg('http://www.daimajiayuan.com/test.php?class_id=3&id=2','class_id',4); 

修改结果:

http://www.daimajiayuan.com/test.php?class_id=4&id=2

参考网站:http://www.daimajiayuan.com/sitejs-17226-1.html

本文内容均亲自测试使用过,请放心使用。如有问题,欢迎跟帖讨论,我会及时回复消息哒O(∩_∩)O~~

转载于:https://my.oschina.net/jingyao/blog/789895

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值