专栏首页deepccjs取url参数

js取url参数

经常用到js取url的参数,记下来。

function getUrlParam(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
    var r = window.location.search.substr(1).match(reg);  //匹配目标参数
    if (r != null) return unescape(r[2]); return null; //返回参数值
}

刚看到笑看风云写的JavaScript面向对象(极简主义法)和一个分解url参数面试题,我作了一下修改,记录下来!!!

修改前:

<script type="text/javascript">
    var url="www.taobao.com?key0=a&key1=b&key2=c";
    
    function parseQueryString(url){
        var str=url.split("?")[1],
            items=str.split("&");
        var arr,name,value;
        for(var i = 0, l = items.length; i < l; i++){
            arr=items[i].split("=");
            name= arr[0];
            value= arr[1];
            this[name]=value;
        }
    }
    var obj=new parseQueryString(url);
    alert(obj.key1)
</script>

修改后:

<script type="text/javascript">
    var url="www.taobao.com?key0=a&key1=b&key2=c";
    var pQString={
        createNew:function(url){
            var str=url.split("?")[1],
                items=str.split("&");
            var arr,name,value;
            for(var i = 0, l = items.length; i < l; i++){
                arr=items[i].split("=");
                name= arr[0];
                value= arr[1];
                this[name]=value;
            }
        }
    }

    var obj=new pQString.createNew(url);
    alert(obj.key1)
</script>

 -----------------------------------------------------------------------------

 感谢  草根程序猿很厉害把这个方法重写了一下,更严密,高效了,最后面在些再学习一下!!!

<script type="text/javascript">
function getQueryString(url) { 
    if(url) { 
        url=url.substr(url.indexOf("?")+1); //字符串截取,比我之前的split()方法效率高
    } 
    var result = {}, //创建一个对象,用于存name,和value
        queryString =url || location.search.substring(1), //location.search设置或返回从问号 (?) 开始的 URL(查询部分)。 
        re = /([^&=]+)=([^&]*)/g, //正则,具体不会用
        m; 
   
   while (m = re.exec(queryString)) { //exec()正则表达式的匹配,具体不会用 
        result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]); //使用 decodeURIComponent() 对编码后的 URI 进行解码
   } 
   
   return result; 
} 
   
// demo 
var myParam = getQueryString("www.taobao.com?key0=a&key1=b&key2=c"); 
alert(myParam.key1); 

</script>

注:

1、substr()与substring(start,stop) ,提取字符串中介于两个指定下标之间的字符。

重要事项:与 slice() 和 substr() 方法不同的是,substring() 不接受负的参数。参见http://www.w3school.com.cn/js/jsref_substring.asp

2、location.search.substring(1) ,location.search设置或返回从问号 (?) 开始的 URL(查询部分)。参见http://www.w3school.com.cn/htmldom/prop_loc_search.asp

3、exec() 方法用于检索字符串中的正则表达式的匹配。太强大了,还不会用,参考http://www.w3school.com.cn/js/jsref_exec_regexp.asp

4、使用 decodeURIComponent() 对编码后的 URI 进行解码。参见http://www.w3school.com.cn/js/jsref_decodeURIComponent.asp

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • js获取url参数

    deepcc
  • jquery插件开发模板

    deepcc
  • Cookie 基本操作

    deepcc
  • js获取url参数

    deepcc
  • 正则表达式大全

    正则表达式是一个描述字符模式的对象。 JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方...

    Hongten
  • zabbix-agent(客户端安装)

    useradd -g zabbix zabbix -s /sbin/nologin

    py3study
  • 资源: 适合 AI 新手的 9 款人工智能开源软件

    如果要问当下互联网什么最热门?毫无疑问是人工智能。为此,小编特别推荐9款托管在码云上的人工智能开源软件,希望能够给大家带来一点点帮助和启发!

    AI科技大本营
  • 深度学习算法优化系列四 | 如何使用OpenVINO部署以Mobilenet做Backbone的YOLOv3模型?

    因为最近在和计算棒打交道,自然存在一个模型转换问题,如果说YOLOv3或者YOLOV3-tiny怎么进一步压缩,我想大多数人都会想到将标准卷积改为深度可分离卷积...

    BBuf
  • 二进制学习系列-堆溢出

    在C++中,如果类中有虚函数,那么它就会有一个虚函数表的指针__vfptr,在类对象最开始的内存数据中。之后是类中的成员变量的内存数据。 对于子类,最开始的内存...

    安恒网络空间安全讲武堂
  • online_tool_01_ShowDoc_在线API文档工具

    shirayner

扫码关注云+社区

领取腾讯云代金券