---
title: "[开发笔记]js修改url中某个指定的GET参数的值"
id: "33"
type: "post"
slug: "33"
published_at: "2015-07-03T14:16:23+00:00"
modified_at: "2018-09-12T12:00:35+00:00"
url: "https://www.hitsword.org/2015/33.html"
markdown_url: "https://www.hitsword.org/2015/33.md"
excerpt: "当一个页面上的搜索条件很多而且需要进行联合get查询的时候，我们按照一定的规则将其组织为一个正确的url这是没 […]"
taxonomy_category:
  - "JavaScript"
  - "开发笔记"
taxonomy_post_tag:
  - "GET"
  - "javascript"
  - "JS"
  - "URL"
  - "编程"
---

# [开发笔记]js修改url中某个指定的GET参数的值

当一个页面上的搜索条件很多而且需要进行联合get查询的时候，我们按照一定的规则将其组织为一个正确的url这是没有问题的，但是当这个联合查询可以无限制的进行下去的话，你该如何组织你的url呢？无限制的在当前的url后面附加你的查询参数吗？很显然这是不科学的。下面分享一个办法可以直接修改当前url中的某个参数的值而不会导致这个url中同一个参数存在多个值的情况。这在一定程度上就将url的长度控制到了最短。既人性化又利于搜索引擎的优化。下面是利用javascript修改url中某个参数的值的具体思路：

```
  /*
  * 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.hitsword.org/test.php?from=3&id=2','from',4); 
```

  
 结果即为：http://www.hitsword.org/test.php?from=4&id=2
