相关文章推荐
帅气的煎饼果子  ·  记录一个有趣的按钮样式_有趣的button组 ...·  1 年前    · 
想发财的遥控器  ·  关于印发《温州市人才住房补贴政策 实施细则》的通知·  1 年前    · 
活泼的企鹅  ·  Specifications of WDC ...·  1 年前    · 
谈吐大方的电脑桌  ·  OpenSSL: ECDSA_SIG_st ...·  1 年前    · 
光明磊落的玉米  ·  警告 C6001 使用未初始化的内存“*he ...·  1 年前    · 
Code  ›  用javascript替换URL中的参数值开发者社区
url javascript hash
https://cloud.tencent.com/developer/article/1025987
聪明的莲藕
1 年前
作者头像
菩提树下的杨过
0 篇文章

用javascript替换URL中的参数值

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 菩提树下的杨过 > 用javascript替换URL中的参数值

用javascript替换URL中的参数值

作者头像
菩提树下的杨过
发布 于 2018-01-22 14:45:19
1.2K 0
发布 于 2018-01-22 14:45:19
举报

今天遇到一个需要用javascript将url中的某些参数替换的需求,想起了不久前从司徒正美先生的博客中淘到了一个 parseUrl函数 ,正好可以借此实现,代码整理如下:

    //分析url
    function parseURL(url) {
        var a = document.createElement('a');
        a.href = url;
        return {
            source: url,
            protocol: a.protocol.replace(':', ''),
            host: a.hostname,
            port: a.port,
            query: a.search,
            params: (function () {
                var ret = {},
                seg = a.search.replace(/^\?/, '').split('&'),
                len = seg.length, i = 0, s;
                for (; i < len; i++) {
                    if (!seg[i]) { continue; }
                    s = seg[i].split('=');
                    ret[s[0]] = s[1];
                return ret;
            })(),
            file: (a.pathname.match(/\/([^\/?#]+)$/i) || [, ''])[1],
            hash: a.hash.replace('#', ''),
            path: a.pathname.replace(/^([^\/])/, '/$1'),
            relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1],
            segments: a.pathname.replace(/^\//, '').split('/')
    //替换myUrl中的同名参数值
    function replaceUrlParams(myUrl, newParams) {
        for (var x in myUrl.params) {
            for (var y in newParams) {
                if (x.toLowerCase() == y.toLowerCase()) {
                    myUrl.params[x] = newParams[y];
        for (var x in newParams) {
            var hasInMyUrlParams = false;
		    for (var y in myUrl.params) {
		        if (x.toLowerCase() == y.toLowerCase()) {
		            myUrl.params[y] = newParams[x];
		            hasInMyUrlParams = true;
		            break;
            //原来没有的参数则追加
		    if (!hasInMyUrlParams) {
		        myUrl.params[x] = newParams[x];
        var _result = myUrl.protocol + "://" + myUrl.host + ":" + myUrl.port + myUrl.path + "?";
        for (var p in myUrl.params) {
            _result += (p + "=" + myUrl.params[p] + "&");
        if (_result.substr(_result.length - 1) == "&") {
            _result = _result.substr(0, _result.length - 1);
        if (myUrl.hash != "") {
            _result += "#" + myUrl.hash;
        return _result;
    //辅助输出
    function w(str) {
        document.write(str + "");
    var myURL = parseURL('http://abc.com:8080/dir/index.html?id=255&m=hello#top');
    w("myUrl.file = " + myURL.file)     // = 'index.html' 
    w("myUrl.hash = " + myURL.hash)     // = 'top'  
    w("myUrl.host = " + myURL.host)     // = 'abc.com'
    w("myUrl.query = " + myURL.query)    // = '?id=255&m=hello'
    w("myUrl.params = " + myURL.params)   // = Object = { id: 255, m: hello }  
    w("myUrl.path = " + myURL.path)     // = '/dir/index.html'  
    w("myUrl.segments = " + myURL.segments) // = Array = ['dir', 'index.html']
    w("myUrl.port = " + myURL.port)     // = '8080'  
    w("myUrl.protocol = " + myURL.protocol) // = 'http'  
 
推荐文章
帅气的煎饼果子  ·  记录一个有趣的按钮样式_有趣的button组件-CSDN博客
1 年前
想发财的遥控器  ·  关于印发《温州市人才住房补贴政策 实施细则》的通知
1 年前
活泼的企鹅  ·  Specifications of WDC WD5000AAKX-08U6AA0 Drive with Firmware 19.01H19
1 年前
谈吐大方的电脑桌  ·  OpenSSL: ECDSA_SIG_st Struct Reference
1 年前
光明磊落的玉米  ·  警告 C6001 使用未初始化的内存“*head”。 这个提示是为什么啊?-编程语言-CSDN问答
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号