另外,url中可能没有“myparam=30”,则直接加入进去,
url其他的参数都要原封不动,顺序可以打乱。

解决方案 »

  1.   

    eval("http://aaa.bbb.com/a.jsp?"+p+"="+v+"&xx=33")
      

  2.   

    ufrshchenw(tchanway) 的方法没看懂,也可能是我没说清楚吧。我是想把原来的url中后面的指定的 “参数=值”换成“参数=新值”,如果没有,就加进去。
      

  3.   

    eval() 是把字符串当表达式执行,"http://aaa.bbb.com/a.jsp?"+p+"="+v+"&xx=33"执行后,返回什么呢?
      

  4.   

    <script>
    var p="myparam";  //这是个字符串
    var v=30;         //这是个数字var url="http://aaa.bbb.com/a.jsp?"+p+"="+v+"&xx=33";
    //alert(url);
    </script>
      

  5.   

    var a;
    a="ttp://aaa.bbb.com/a.jsp?"+p+"="+v+"&xx=33";
    不行吗?
    这样a应该就是http://aaa.bbb.com/a.jsp?myparam=30&xx=33
      

  6.   

    我倒,看来我的表达能力确实差 :-(再说详细点吧:这是原来的url的可能情况:
    http://aaa.bbb.com/a.jsp
    http://aaa.bbb.com/a.jsp?
    http://aaa.bbb.com/a.jsp?xx=33
    http://aaa.bbb.com/a.jsp?xx=33&yy=99
    http://aaa.bbb.com/a.jsp?myparam=30&xx=33&yy=99
    http://aaa.bbb.com/a.jsp?xx=33&yy=99&myparam=30
    ....
    现在给定:
    var p="myparam";  //这是个字符串
    var v=22;         //这是个数字经过处理后,原来的url应该变成下面的新url:http://aaa.bbb.com/a.jsp?myparam=22
    http://aaa.bbb.com/a.jsp?myparam=22
    http://aaa.bbb.com/a.jsp?xx=33&myparam=22
    http://aaa.bbb.com/a.jsp?xx=33&yy=99&myparam=22
    http://aaa.bbb.com/a.jsp?myparam=22&xx=33&yy=99
    http://aaa.bbb.com/a.jsp?xx=33&yy=99&myparam=22如果给定:
    var p="xx";  //这是个字符串
    var v=22;    //这是个数字经过处理后,原来的url应该变成下面的新url:http://aaa.bbb.com/a.jsp?xx=22
    http://aaa.bbb.com/a.jsp?xx=22
    http://aaa.bbb.com/a.jsp?xx=22
    http://aaa.bbb.com/a.jsp?xx=22&yy=99
    http://aaa.bbb.com/a.jsp?myparam=30&xx=22&yy=99
    http://aaa.bbb.com/a.jsp?xx=22&yy=99&myparam=30----------------------------------------
    这会应该说清楚了吧?
      

  7.   

    算了,自己搞定了:var p="myparam";  //这是个字符串
    var v=22;         //这是个数字
    var url="http://aaa.bbb.com/a.jsp?myparam=30&xx=33&yy=99"var reg=new RegExp(p+"="+"\\d*","g"); url=url.replace(reg,p+"="+v); 
    alert(url);考虑得可能是不太全面,但能用了,欢迎高手请提建议,谢谢!
    也谢谢上面的各位。
      

  8.   

    楼主用正则表达式的方法不错啊,但是为什么不直接写成http://aaa.bbb.com/a.jsp?"+p+"="+v+"&xx=33"呢?
      

  9.   

    <script>
    var p="myparam";  //这是个字符串
    var v=30;         //这是个数字var url="http://aaa.bbb.com/a.jsp?"+p+"="+v+"&xx=33";
    //alert(url);
    </script>
      

  10.   

    因为:我!@#$%^&*,请仔细看看上面我的详细说明。改进了一下,这是完整的函数:  function doGotoPage(to,pn)
      {
        var p=parseInt(to);
        if(isNaN(p)) return;
        var h=window.location.href;
        var s=window.location.search;
        if(!s) 
        {
          window.location.href=h+"?"+pn+"="+p;
          return;
        }
        if(s=="?") 
        {
          window.location.href=h+pn+"="+p;
          return;
        }
        var reg=new RegExp(pn+"="+"\\d*","g");
        if(reg.test(h))
          h=h.replace(reg,pn+"="+p); //alert(h);
        else
          h=h+"&"+pn+"="+p;
        window.location.href=h;
      }
      

  11.   

    你的替换正则确实不是很准确, 改一下先.
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    String.prototype.setQuery = function(name, value)
    {
      var reg = new RegExp("(^|&|\\?)("+ name +"=)([^&]*)(&|$)");
      var r = this.substr(this.indexOf("?")+1).match(reg);
      if (r!=null) return this.replace(reg, "$1$2"+ value +"$4");
      else return this + (this.indexOf("?")>-1 ? "&" : "?")+ name +"="+ value
    }
    //var url = "http://aaa.bbb.com/a.jsp?xx=22";
    //var url = "http://aaa.bbb.com/a.jsp?xx=22&yy=99";
    var url = "http://aaa.bbb.com/a.jsp?myparam=30&xx=22&yy=99";
    //var url = "http://aaa.bbb.com/a.jsp?xx=22&yy=99&myparam=30";
    var p="myparam";
    var v=22;
    alert(url.setQuery(p, v));
    //-->
    </SCRIPT>有则替换, 无则添加! :)
      

  12.   

    http://aaa.bbb.com/a.jsp?"+p+"="+v+"&xx=33"
      

  13.   

    十分谢谢meizz(梅花雪)前辈!to wen1818(冷月孤心) ,以及类似回答的所有人:谢谢你们的热心,但请看清楚我的要求先。
      

  14.   

    meizz(梅花雪),强,晕,看到你的答案才知道我自己想到的有多少的落后(逻辑一样,但方法却要烦N倍)。
    顶一下!
    领教了!
      

  15.   

    var reg = new RegExp("(^|&|\\?)("+ name +"=)([^&]*)(&|$)");meizz(梅花雪)前辈的这个表达式允许直接是字符串开头部分,
    但实际的url不会前面什么都没有吧?也许这样更好:var reg = new RegExp("(&|\\?)("+ name +"=)([^&]*)(&|$)");
      

  16.   

    this.substr(this.indexOf("?")+1)  我匹配的是从URL里的 ? 号部分开始的.