js获取或设置当前窗口url参数

直接上代码

// 获取当前窗口url中param参数的值
function get_param(param){
    var query = location.search.substring(1).split('&');
    for(var i=0;i<query.length;i++){
        var kv = query[i].split('=');
        if(kv[0] == param){
            return kv[1];
        }
    }
    return null;
}

// 设置当前窗口url中param的值
function set_param(param,value){
    var query = location.search.substring(1);
    var p = new RegExp("(^|&"+param+")=[^&]*");
    if(p.test(query)){
        query = query.replace(p,"$1="+value);
        location.search = '?'+query;
    }else{
        if(query == ''){
            location.search = '?'+param+'='+value;
        }else{
            location.search = '?'+query+'&'+param+'='+value;
        }
    }    
}


注意location.search获取到的是url中?开始到#之间的内容(包含?但不包含#)。

如果是设置指定url的param值,可以用下面的函数:

// 设置指定url中param的值,返回处理后的url
function set_url_param(url,param,value){
        if(url.indexOf('?') != -1){  
                var p = new RegExp("(\\?|&"+param+")=[^&]*");
                if(p.test(url)){
                        url = url.replace(p,"$1="+value);
                }else{
                        url = url+'&'+param+'='+value;
                }
        }else{
                url = url+'?'+param+'='+value;
        }
        return url;
}       

 

再上一个翻页代码,其中用有到了上面两个函数

// 上一页
function page_pre(current_page,page_total){
    if(parseInt(current_page) <= 1 || parseInt(current_page) > parseInt(page_total)){
        return false;
    }
    var pre_page = parseInt(current_page) - 1;
    set_param('page',pre_page);
}

// 下一页
function page_next(current_page,page_total){
    if(parseInt(current_page) < 1 || parseInt(current_page) >= parseInt(page_total)){
        return false;
    }
    var next_page = parseInt(current_page) + 1;
    set_param('page',next_page);
}

 

posted @ 2013-10-14 12:13  soj  阅读(5856)  评论(0编辑  收藏  举报