JavaScript操作 url 中 search 部分方法函数


Posted in Javascript onJune 15, 2016

前言

首先,我们需要知道什么是 search , search 是 window.location 的一个属性.举个例子:

首先,我们这里有一个 url,是 http://www.a.com/list/2.html?page=2&color=4&size=3#pic.

我们访问访问这个地址,打开控制台,输入window.location,会得到如下图的结果

JavaScript操作 url 中 search 部分方法函数

如上,我们要操作的就是上图中方框框出来的这个部分.

为什么要操作这个?

例如,我在第二页,需要跳转到第三页,就需要把上面的 page=2 给更新成 page=3 并且保证其他的参数保留.

又或者,本来没有search结果(如一般列表的第一页就啥都没有),但我现在需要加上page=2.

再来,我需要知道我现在在第几页,也就是说,我需要获取 page的值.

等等,都需要操作search.现在我们前后端分离,search是一个很重要的参数配置的方法.

构建方法

获取search中指定的某个参数值

百度一下,我们找到如下方法:

function GetQueryString(name){
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if(r!=null)return unescape(r[2]); return null;
}

方法出处:用JS获取地址栏参数的方法

全功能方法

本来想写实现思路的,但一时想不起来了,直接给最终方法:

function funcUrl(name,value,type){
var loca = window.location;
var baseUrl = type==undefined ? loca.origin + loca.pathname + "?" : "";
var query = loca.search.substr(1);
// 如果没有传参,就返回 search 值 不包含问号
if (name==undefined) { return query }
// 如果没有传值,就返回要查询的参数的值
if (value==undefined){
var val = query.match(new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"));
return val!=null ? unescape(val[2]) : null;
};
var url;
if (query=="") {
// 如果没有 search 值,则返回追加了参数的 url
url = baseUrl + name + "=" + value;
}else{
// 如果没有 search 值,则在其中修改对应的值,并且去重,最后返回 url
var obj = {};
var arr = query.split("&");
for (var i = 0; i < arr.length; i++) {
arr[i] = arr[i].split("=");
obj[arr[i][0]] = arr[i][1];
};
obj[name] = value;
url = baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g,"").replace(/\:/g,"=").replace(/\,/g,"&");
};
return url;
}

使用方法

funcUrl()获取完整search值(不包含问号)

funcUrl(name)返回 url 中 name 的值(整合上一段别人的方法)

funcUrl(name,value) 将search中name的值设置为value,并返回完整url

返回内容如 http://www.a.com/list/2.html?page=2&color=4&size=3#pic

funcUrl(name,value,type) 作用和第三条一样,但这只返回更新好的search字符串

这里的 type 可以是任意字符,比如1;

返回内容举例 page=2&color=4&size=3;

一般用于从url获取参数,再对接到接口上

小结

本来想找个现成的插件来用,结果要么太大看不懂,要么不好使.当然,主要还是我水平太差的原因.

所以就造个轮子玩玩,虽然代码不够优雅,但是还是满足了我的需求.如果你有更好的建议,给我留言哦.

其实,主要是配合vue来用的,但这里没有VUE的内容,因此就不算VUE的系列教程了.

以上所述是小编给大家介绍的JavaScript操作 url 中 search 部分方法函数的全部叙述,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
各种常用浏览器getBoundingClientRect的解析
May 21 Javascript
javascript:;与javascript:void(0)使用介绍
Jun 05 Javascript
获取非最后一列td值并将title设为该值的方法
Oct 30 Javascript
浅析jQuery EasyUI中的tree使用指南
Dec 18 Javascript
jquery图片滚动放大代码分享(2)
Aug 28 Javascript
jQuery实现连续动画效果实例分析
Oct 09 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
Oct 25 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
Feb 17 Javascript
JS表格组件神器bootstrap table详解(强化版)
May 26 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
Feb 12 Javascript
详解AngularJS 路由 resolve用法
Apr 24 Javascript
微信小程序按钮点击动画效果的实现
Sep 04 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
Jun 15 #Javascript
JS封装的自动创建表格的实现代码
Jun 15 #Javascript
基于JavaScript代码实现自动生成表格
Jun 15 #Javascript
JavaScript生成带有缩进的表格代码
Jun 15 #Javascript
全面解析JavaScript中apply和call以及bind(推荐)
Jun 15 #Javascript
JavaScript仿flash遮罩动画效果
Jun 15 #Javascript
jquery中的常见问题及快速解决方法小结
Jun 14 #Javascript
You might like
php断点续传之如何分割合并文件
2014/03/22 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
javascript实现显示和隐藏div方法汇总
2015/08/14 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
vue element upload实现图片本地预览
2019/08/20 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python图像处理之镜像实现方法
2015/05/30 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
Django接受前端数据的几种方法总结
2016/11/04 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
Python mutiprocessing多线程池pool操作示例
2019/01/30 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
不用游标的SQL语句有哪些
2012/09/07 面试题
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
保密承诺书
2014/03/27 职场文书
就职演讲稿范文
2014/05/19 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
公司前台接待岗位职责
2015/04/03 职场文书
陈斌强事迹观后感
2015/06/17 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python