zoukankan      html  css  js  c++  java
  • 地址栏传参

    // 地址栏传参
    function getLocation() {
      // 获取地址栏参数
      var str = location.search;
      // var  str = "?name='zs'&age=18&sex='man'";
      // 解码
      str = decodeURI(str);
      // 切割去除?[slice切割字符串]
      str = str.slice(1);
      // 将字符串分割为数组【split()】
      var arr = str.split("&");
      var obj = {};
      // 遍历数组获取键值
      arr.forEach(function(v, i) {
        var key = v.split("=")[0];
        var value = v.split("=")[1];
        obj[key] = value;
      });
      return obj;
    }
    console.log(getLocation());
    
    function getLocation(k) {
      // 获取地址栏参数
      var str = location.search;
      // 解码
      str = decodeURI(str);
      // 切割去除?[slice切割字符串]
      str = str.slice(1);
      // 将字符串分割为数组【split()】
      var arr = str.split("&");
      var obj = {};
      // 遍历数组获取键值
      arr.forEach(function(v, i) {
        var key = v.split("=")[0];
        var value = v.split("=")[1];
        obj[key] = value;
      });
      return obj[k];
    }
    console.log(getLocation("name"));
    
    // 将url的查询参数解析成字典对象
    // 因为url允许用户随意输入,如果用拆字符的方式,有任何一处没有考虑到容错,就会导致整个js都报错。而正则就没有这个问题,他只匹配出正确的配对,非法的全部过滤掉,简单,方便。
    
    function getQueryObject(url) {
      url = url == null ? window.location.href : url;
      // substring(start,end)截取字符串,取不到end,所以+1
      var search = url.substring(url.indexOf("?") + 1);
      // console.log(typeof(search));
      // console.log(search);
      var obj = {};
      // 前后的斜杠/是正则表达式的分隔符,最后的g表示全局匹配,匹配到第一个之后不会停下来,会继续匹配,
      // ():标记一个子表达式的开始与结束位置
      // [:标记一个中括号表达式的开始。要匹配 [,请使用 [。
      // [^]表示字符类取反,比如[^abc]匹配的就是不是a和b和c的单个字符,[^?&=]匹配不是^和?和=的单个字符.
      // 字符类[]后面的+和*表示量词:
      // + 等价于 {1,} 重复1次或多次
      // * 等价于 {0,} 重复0次或多次
      var reg = /([^?&=]+)=([^?&=]*)/g;
    
      // 替换:replace(需要替换,替换值)
      /*第二个参数可传入函数,会对每个匹配到的字符串'rs'做一次处理,然后你可以将结果return 出来*/
      search.replace(reg, function(rs, $1, $2) {
        console.log($1);
        console.log($2);
    
        // 解码转为中文
        // decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。
        var name = decodeURIComponent($1);
        var val = decodeURIComponent($2);
        // String(s);
        // 参数 s 是要存储在 String 对象中或转换成原始字符串的值。
        // console.log(name);
        // console.log(val);
        val = String(val);
        obj[name] = val;
        console.log(rs);
    
        // obj[decodeURIComponent($1)]=decodeURIComponent($2)
        return rs;
      });
      return obj;
    }
    
    console.log(getQueryObject());
    // "http://www.cnblogs.com/leee/p/4456840.html?name=ls&age=28&sex=man"
    // Object {name: "1", dd: "ddd**"}
    
    //   正则解析;
    var reg = /([^?&=]+)=([^?&=]*)/g;
    
    var str = "foo=bar&lang=js";
    var reg = /[^?&=]{1,}=[^?&=]{0,}/;
    console.log(str.match(reg)); //输出 ["foo=bar"]
    
    var str = "foo=bar&lang=js";
    var reg = /[^?&=]{1,}=[^?&=]{0,}/g;
    console.log(str.match(reg)); //输出 ["foo=bar", "lang=js"]
    
    var str = "foo=bar&lang=js";
    var reg = /([^?&=]{1,})=([^?&=]{0,})/;
    console.log(str.match(reg)); //输出 ["foo=bar", "foo", "bar"]
    
  • 相关阅读:
    数据结构——算法之(029)( 字符串原地压缩)
    hihoCoder #1174:拓扑排序·一
    POJ 3026 Borg Maze
    Remove Duplicates from Sorted List II--LeetCode
    mach-o格式分析
    otool -l 可执行文件结构
    mach-o可执行文件结果
    ios 编译版本 最低版本 运行版本 动态链接库
    关于__IPHONE_OS_VERSION_MAX_ALLOWED和__IPHONE_OS_VERSION_MIN_ALLOWED的用法
    OO真经——关于面向对象的哲学体系及科学体系的探讨(下)
  • 原文地址:https://www.cnblogs.com/bug-jin/p/10247017.html
Copyright © 2011-2022 走看看