JS实现URL的拼接转换

       很多时候能在前端用js实现的数据交互,要比后台套页面实现起来要简单的多,项目中要实现多重筛选的功能,没有做成接口,那就只能js实现url的拼接转换刷新页面,本质就是改变get传参里参数值,这里先简单介绍下window.location里属性值

属性 描述
href 完整的URL
pathname 当前URL的主机名
host 当前URL的主机名和端口号
port 当前URL的端口号
hash 从#开始的URL(锚)
search 从?开始的URL(查询部分)
protocol 当前URL的协议

      js对url的操作无非就是对这几个属性值的操作,html自定义属性,记录对应的参数和值

<div ">
  <a href="javascript:void(0);" class="remove-sel selected" style="padding-left: 0;" type="sentiment">全部</a>
  <a href="javascript:void(0);" class="add-sel" type="sentiment" value="1">负面</a>
  <a href="javascript:void(0);" class="add-sel" type="sentiment" value="2">中性</a>
  <a href="javascript:void(0);" class="add-sel" type="sentiment" value="3">正面</a>
</div>

增加参数

function addParama(key, val) {
        var search = window.location.search;
        if (search.indexOf('?') != -1) {
            search = search.substring(1);
            var search_arr = search.split('&');
            var url_arr = [];
            var exists = 0;
            for (var i = 0; i < search_arr.length; i++) {
                if (!search_arr[i])
                    continue;
                var temp = search_arr[i].split('=');
                if (key == temp[0]) {
                    exists = 1;
                    url_arr.push(key + '=' + val);
                } else {
                    if (temp[0] != 'page' && temp[0] != 'token') {
                        url_arr.push(search_arr[i]);
                    }
                }
            }
            if (!exists)
                url_arr.push(key + '=' + val);
            var url = window.location.pathname + '?' + url_arr.join('&');
        } else {
            var url = window.location.pathname + '?' + key + '=' + val;
        }
        window.location.href = url;
    }

删除参数

function delParama(key) {
        var search = window.location.search;
        var url = window.location;
        if (search.indexOf(key) != -1) {
            search = search.substring(1);
            var search_arr = search.split('&');
            var url_arr = [];
            for (var i = 0; i < search_arr.length; i++) {
                var temp = search_arr[i].split('=');
                if (key != temp[0]) {
                    url_arr.push(search_arr[i]);
                }
            }

            if (url_arr.length == 0){
                url = window.location.pathname;
            }else {
                url = window.location.pathname + '?' + url_arr.join('&');
            }
        }
        window.location.href = url;
    }

 

posted @ 2017-12-14 17:42  微lin  阅读(4825)  评论(0编辑  收藏  举报