zoukankan      html  css  js  c++  java
  • 在js中获取query string 以及重写URL的函数

    函数用途:如标题。1. 从URL中解析出參数,2.重写URL中的參数值


    例如以下代码所看到的。包括了測试。能够直接copy到浏览器中,输入測试地址:localhost:xxx?a=1&b=2&c=3 ,在console中执行查看结果:

    // - test
    
    // - get from current location
    var url = document.location.href;
    
    // - extract param from url
    console.log(getUrlParam(url,"a") == "1");
    console.log(getUrlParam(url,"b") == "2");
    console.log(getUrlParam(url,"c") == "3");
    
    // - rewrite url
    url = setUrlParam(url,"a",3);
    url = setUrlParam(url,"b",1);
    url = setUrlParam(url,"c",2);
    
    console.log(getUrlParam(url,"a") == "3");
    console.log(getUrlParam(url,"b") == "1");
    console.log(getUrlParam(url,"c") == "2");
    
    
    // - helper functions
    
     function getUrlParam(location,name) {
            var url = location;
            var splitIndex = url.indexOf("?") + 1;
            var paramStr = url.substr(splitIndex, url.length);
    
            var arr = paramStr.split('&');
            for (var i = 0; i < arr.length; i++) {
                var kv = arr[i].split('=');
                if (kv[0] == name) {
                    return kv[1];
                }
            }
            return "";
        }
    
        function setUrlParam(location,name, value) {
            var url = location;
            var splitIndex = url.indexOf("?") + 1;
            var paramStr = url.substr(splitIndex, url.length);
    
            var newUrl = url.substr(0, splitIndex);
    
            // - if exist , replace 
            var arr = paramStr.split('&');
            for (var i = 0; i < arr.length; i++) {
                var kv = arr[i].split('=');
                if (kv[0] == name) {
                    newUrl += kv[0] + "=" + value;
                } else {
                    if (kv[1] != undefined) {
                        newUrl += kv[0] + "=" + kv[1];
                    }
                }
                if (i != arr.length - 1) {
                    newUrl += "&";
                }
            }
    
            // - if new, add
            if (newUrl.indexOf(name) < 0) {
                newUrl += splitIndex == 0 ? "?" + name + "=" + value : "&" + name + "=" + value;
            }
            return newUrl;
        }
    IE中执行结果:




  • 相关阅读:
    Python基础学习九 数据库备份
    Python基础学习八 写日志
    Python 小练习三 发邮件
    Python基础补充(二) 多核CPU上python多线程并行的一个假象【转】
    pat 1118 Birds in Forest (25分) 并查集
    Java Map实现按value从大到小排序
    java实现排列组合(通俗易懂)
    java实现24点游戏代码
    eclipse搭建struts2环境及所遇到的问题
    java非常好用的读取文件的流的代码
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5178966.html
Copyright © 2011-2022 走看看