MzTreeView.prototype.getAttribute = function(source, name)
{
  var reg = new RegExp("(^|;|\\s)"+ name +"\\s*:\\s*([^;]*)(\\s|;|$)", "i");
  if (reg.test(source)) return RegExp.$2.replace(/[\x0f]/g, ";"); return "";
};
见过这个函数没有?梅老大写的
功能有点不同,他是用这个来取name参数的值的,你给变成替换就行了

解决方案 »

  1.   

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title></title>
    <script>
     function getNewUrl(oldurl,paramname,pvalue){
        var reg = new RegExp("(\\?|&)"+ paramname +"=([^&]*)(&|$)","gi");
        var t=oldurl.match(reg)[0];
        var retxt=t.substring(0,t.indexOf("=")+1)+pvalue;
        if(t.charAt(t.length-1)=='&') retxt+="&";
        return oldurl.replace(reg,retxt);
     }
     alert(getNewUrl("http://servername/virturlpath/index.asp?p1=123&p2=aa&p3=hh&p4=1","p4","cxz"));
    </script></head>
    <body></body>
    </html>
      

  2.   

    借用一下
    -----------------------
    <script>
    function aa(source, name)
    {
      var reg = new RegExp("(^|\\?|&)"+ name +"=([^&]*)(\\s|&|$)", "i");
      
      if (reg.test(source)) return RegExp.$2; return "";
    };
    alert(aa("http://community.csdn.net/Expert/topic/4223/4223277.xml?temp=6.502932E-02", "temp"))
    </script>
      

  3.   

    To : cxz7531(大花猫) 
    你的这个函数很好,只是如果要做成通用的函数,必须处理给出的参数是否合法。
    如我调用 alert(getNewUrl("http://servername/virturlpath/index.asp?p1=123&p2=aa&p3=hh&p4=1","a4","cxz"));将会发生错误,正常的处理结果应该是返回原url值.可以改进一下么?
      

  4.   

    稍改一下
    <script>
     function getNewUrl(oldurl,paramname,pvalue){
        var reg = new RegExp("(\\?|&)"+ paramname +"=([^&]*)(&|$)","gi");
        var pst=oldurl.match(reg);
        if((pst==undefined) || (pst==null)) return oldurl;
        var t=pst[0];
        var retxt=t.substring(0,t.indexOf("=")+1)+pvalue;
        if(t.charAt(t.length-1)=='&') retxt+="&";
        return oldurl.replace(reg,retxt);
     }
     alert(getNewUrl("http://servername/virturlpath/index.asp?p1=123&p2=aa&p3=hh&p4=1","a4","cxz"));
    </script>
      

  5.   

    To : cxz7531(大花猫) 
    我刚才又想起一个问题,该函数是否可以再加一个参数flag,用来设置要替换的参数如果不存在于url时的情况。如flag=0时返回原url值,如果为flag=1时,在原url中增加该参数。如:
    getNewUrl("http://servername/virturlpath/index.asp?p1=123&p2=aa&p3=hh&p4=1","a4","cxz");
    它将返回"http://servername/virturlpath/index.asp?p1=123&p2=aa&p3=hh&p4=1&a4=cxz"getNewUrl("http://servername/virturlpath/index.asp","a4","cxz")
    它将返回"http://servername/virturlpath/index.asp?a4=cxz"这主要是判断原url的格式了。高手们不妨试一试。
      

  6.   

    //设置QueryString 例如 SetQueryString('index.asp?ID=1&PAGE=2&SIZE=3','PAGE','4')
    //SetQueryString(URL模板,索引,值);
    function SetQueryString(urlStr,QName,QValue){
    if(urlStr.indexOf('?')<0){
    return urlStr+'?'+QName.toUpperCase()+'='+QValue;
    }else{
    if(urlStr.toUpperCase().indexOf(QName.toUpperCase()+'=')<0){
    return urlStr+'&'+QName.toUpperCase()+'='+QValue;
    }else{
    var oReg=new RegExp(QName+'\=[^\\&]*','ig');
    return urlStr.replace(oReg,QName.toUpperCase()+'='+QValue);
    }
    }
    }
      

  7.   

    <script>
     function getNewUrl(oldurl,paramname,pvalue,flag){
        var reg = new RegExp("(\\?|&)"+ paramname +"=([^&]*)(&|$)","gi");
        var pst=oldurl.match(reg);
        if((pst==undefined) || (pst==null)) return (flag==0)?oldurl:(oldurl+((oldurl.indexOf("?")==-1)?"?":"&")+paramname+"="+pvalue);
        var t=pst[0];
        var retxt=t.substring(0,t.indexOf("=")+1)+pvalue;
        if(t.charAt(t.length-1)=='&') retxt+="&";
        return oldurl.replace(reg,retxt);
     }
     alert(getNewUrl("http://servername/virturlpath/index.asp?p1=123&p2=aa&p3=hh&p4=1","a4","cxz",1));
    </script>