js高级-URL参数处理

添加修改目录


//        http://write.blog.csdn.net/postedit/main.jsp
        
//       http://write.blog.csdn.net/postedit /info/info.jsp?v=4.0&orderno=20170413102723784684136990752&isSave=1


思想:

       /main.jsp 替换成 info/info.jsp



 var URL = function(param){
    if(typeof param=="undefined"){  
    throw new Error("你需要传入一个param作为参数");  
    }  
    this.urlname=param;

}
 URL.prototype = {
    constructor:URL,
    
    subUrl:function(filepath,filename){
        


        var newvalue = filepath+"/"+filename;//info/info.jsp
        var searchvalue = this.parseURL(this.urlname).file;
        
        console.log(newvalue);
        console.log(searchvalue);
        var Str = this.urlname;
        this.urlname = Str.replace(searchvalue,newvalue)
        return this.urlname;



    },
    parseURL:function parseURL(url) {
           var a =  document.createElement('a');
           a.href = url;
           return {
               source: url,
               protocol: a.protocol.replace(':',''),
               host: a.hostname,
               port: a.port,
               query: a.search,
               params: (function(){
                   var ret = {},
                       seg = a.search.replace(/^\?/,'').split('&'),
                       len = seg.length, i = 0, s;
                   for (;i<len;i++) {
                       if (!seg[i]) { continue; }
                       s = seg[i].split('=');
                       ret[s[0]] = s[1];
                   }
                   return ret;
               })(),
               file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1],
               hash: a.hash.replace('#',''),
               path: a.pathname.replace(/^([^\/])/,'/$1'),
               relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,''])[1],
               segments: a.pathname.replace(/^\//,'').split('/')
           };
        },
    addArg:function(key,value){

        //this

        if(this.urlname.indexOf('?')==-1){
            this.urlname+='?';
        }else{
            this.urlname+="&";
        };

        this.urlname+=encodeURIComponent(key)+"="+encodeURIComponent(value);

        return this.urlname;



    },
    addArgs:function(obj){
        
        /*var obj ={
                key:value,
                
        }*/

        //this

        if(this.urlname.indexOf('?')==-1){
            this.urlname+='?';
        }else{
            this.urlname+="&";
        };

        this.urlname+=encodeURIComponent(obj.key)+"="+encodeURIComponent(obj.value);

        return this.urlname;



    },
    getQueryString:function(key){

        var str = this.getSearchString().substr(1);

        var reg = new RegExp("(^|&)"+ key +"=([^&]*)(&|$)");  
        var strArray=str.match(reg);//返回一个数组
        if(strArray!=null){
            return unescape(strArray[2]);


        }
        return null;


    },
    getSearchString:function(){
        var mark = this.urlname.indexOf('?');
        if(mark!=-1){
            return decodeURIComponent(this.urlname.substr(mark));  
        }else{
            return '';
        }

    },
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值