zoukankan      html  css  js  c++  java
  • 使用JavaScript重定向URL参数

    简单实现使用JavaScript重置url参数 ,两种方法,一种字符串拼接形式,一种使用正则判断,且都已经测试通过。供大家参考指教。

    1、字符拼接形式

    function setUri(para, val) {
                var strNewUrl = new String();
                var strUrl = new String();
                var url = window.location.href;
                strUrl = window.location.href;
    
                if (strUrl.indexOf("?") != -1) {
                    strUrl = strUrl.substr(strUrl.indexOf("?") + 1);   //获取参数
    
                    if (strUrl.toLowerCase().indexOf(para.toLowerCase()) == -1) {  //如果没有找到参数,则直接赋值
                        strNewUrl = url + "&" + para + "=" + val;
                        window.location.href = strNewUrl;
                    } else {
                        var aParam = strUrl.split("&");
    
                        for (var i = 0; i < aParam.length; i++) {
                            if (aParam[i].substr(0, aParam[i].indexOf("=")).toLowerCase() == para.toLowerCase()) {
                                aParam[i] = aParam[i].substr(0, aParam[i].indexOf("=")) + "=" + val;
                            }
                        }
                        strNewUrl = url.substr(0, url.indexOf("?") + 1) + aParam.join("&");
                        window.location.href = strNewUrl;
                    }
                } else {
                    strUrl += "?" + para + "=" + val;
                    window.location.href = strUrl;
                }
            }
    View Code

    2、利用正则

     1  function setPara(para, val) {
     2             var newpar = "";
     3             var url = window.location.href;
     4             var pars = location.search.substring(1);
     5 
     6             var reg = new RegExp("(^|)" + para + "=([^&]*)(|$)");
     7             if (reg.test(pars)) {   //有需要的参数para
     8 
     9                 var p1 = pars.split(para)[0];   //productID=100857&count=1&
    10                 var p2 = pars.split(para)[1];   //=75825&coupval=1.5&addressID=358&invoiceID=1245&invoiceName=jesse
    11 
    12                 if (p2.indexOf("&") > -1) {
    13                     var p3 = p2.split("&")[0];
    14                     if (p3 == "=" + val + "") {
    15                         return false;
    16                     }
    17                     newpar = p1 + para + '=' + val + p2.substr(2);
    18                 } else {
    19                     if (p1) {
    20                         newpar = p1 + para + '=' + val;
    21                     } else {
    22                         newpar = para + '=' + val;
    23                     }
    24                 }
    25             } else {
    26                 if (url.indexOf("?") == -1) {  //没有参数
    27                     newpar = para + "=" + val;
    28                 } else {
    29                     newpar = pars + "&" + para + "=" + val;
    30                 }
    31             }
    32             window.location.href = location.href.split('?')[0] + "?" + newpar;
    33         }
    View Code

     调用: 

    <script>
    window.onload = function () {
                var btn = document.getElementById("btnClick");
    
                btn.onclick = function () {
    
              // url地址:http://localhost:54714/testuri.aspx?productID=100857&count=1&coupresId=12785&coupval=1.5&openId=12456&addressID=358&invoiceID=&invoiceName=
              //setUri("coupresId", 0);
              setPara("coupresId", 0); 
        } 
      }
    </script>
    
    <input type="button" id="btnClick" value="重定义参数" />
  • 相关阅读:
    SVN服务器搭建和使用(三)
    SVN服务器搭建和使用(二)
    SVN服务器搭建和使用(一)
    mysql和oracle分页
    Windows许可证 即将过期
    Java 设计模式学习笔记1——策略模式(Duck例子)
    java 抽象类与接口
    java servlet练习测试
    windows 添加开始菜单
    visio连接线设置
  • 原文地址:https://www.cnblogs.com/fuguoliang/p/5972916.html
Copyright © 2011-2022 走看看