码迷,mamicode.com
首页 > Web开发 > 详细

Js插件—替换地址栏参数

时间:2014-05-17 15:04:00      阅读:477      评论:0      收藏:0      [点我收藏+]

标签:blog   class   code   c   http   a   

开了博客竟然有9个月没在来写过了。真是惭愧。今天需要用到一个用js替换地址栏参数的的功能。就自己用JS自己写了一个简单的函数。贴出来仅供大家参考。代码都写了注视。如下:

/*
js替换URL参数值,无该参数则添加
使用:subUrlParam(‘cid‘,"bbb");将返回 http://www.daoyan.com/aaa.htm?cid=bbb&cname=zhangsan
*/
 
/*
替换地址栏参数值
paramName为参数名
paramValue为参数值
如果有多个参数,则把剩余参数组装成name=value&name1=value1....格式的字符串传入
例如:subUrlParam("cid","bbb","name=zhangsan&age=18")
*/
function subUrlParam(paramName, paramValue) {
 
    var result; //返回的新地址
 
    var args; //多个参数
    if (arguments.length > 2) args = arguments[2];
 
    var s = window.location.search; //获取传递的参数。如:?cid=bbb&cname=zhangsan
    if (s != null && s.length > 1) {
 
        var u = s.substr(1); //去掉参数前面的问号
        var parr = u.split("&");
 
        //如果地址栏不包含传递的参数,则直接添加该参数
        if (u.indexOf(paramName) < 0) {
            u += "&" + paramName + "=" + paramValue;
        } else {
            for (var i = 0; i < parr.length; i++) {
                var arr = parr[i].split("="); //分割地址栏参数,cid=aaa
 
                //如果当前的参数名和传递的参数名相同,则把当前参数的值替换成传递的值
                if (arr[0] == paramName) {
                    u = u.replace(parr[i], paramName + "=" + paramValue);
                    break;
                }
            }
        }
 
        //遍历传递进来的多个参数集合,并和原来地址栏上的参数集合对比,如果存在该参数则替换其值,不存在则直接添加该参数
        if (args != null && args.length > 0) {
 
            var aparr = args.split("&");
            for (var i = 0; i < aparr.length; i++) {
 
                var ishas = false; //是否存在该参数
 
                var ap = aparr[i].split("=");
                for (var n = 0; n < parr.length; n++) {
 
                    var arr = parr[n].split("=");
                    if (arr[0] == ap[0]) {
                        ishas = true;
                        u = u.replace(parr[n], aparr[i]);
                        break;
                    }
                }
                //原来参数集合中不存在该参数则添加
                if (!ishas) {
                    u += "&" + aparr[i];
                }
            }
        }
        result = location.pathname + "?" + u;
 
    } else {
        //地址栏没有参数时,直接添加传递的参数
        result = location.href + "?" + paramName + "=" + paramValue;
        if (args != null && args.length > 0) {
            result += args;
        }
    }
    return result;
}

  方法很简陋,将就着用。还有很多完善的空间。水平有限,只能如此了。

Js插件—替换地址栏参数,布布扣,bubuko.com

Js插件—替换地址栏参数

标签:blog   class   code   c   http   a   

原文地址:http://www.cnblogs.com/wenjunming/p/3730817.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!