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 相关文章推荐
js继承的实现代码
Aug 05 Javascript
JS获取页面input控件中所有text控件并追加样式属性
Feb 25 Javascript
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 Javascript
JavaScript常用脚本汇总(三)
Mar 04 Javascript
jquery实现选中单选按钮下拉伸缩效果
Aug 06 Javascript
JavaScript绑定事件监听函数的通用方法
May 14 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
Oct 13 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
Jul 27 Javascript
详解vue渲染函数render的使用
Dec 12 Javascript
node.js实现微信开发之获取用户授权
Mar 18 Javascript
基于javascript canvas实现五子棋游戏
Jul 08 Javascript
基于javascript原生判断DOM是否加载完毕
Oct 14 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数据库连接
2006/10/09 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
html数组字符串拼接的最快方法
2009/09/16 Javascript
禁止js文件缓存的代码
2010/04/09 Javascript
js null undefined 空区别说明
2010/06/13 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
2017/05/05 jQuery
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
在Python中处理XML的教程
2015/04/29 Python
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
python中如何使用朴素贝叶斯算法
2017/04/06 Python
Python中使用多进程来实现并行处理的方法小结
2017/08/09 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
Python星号*与**用法分析
2018/02/02 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
护士毕业生自我鉴定
2014/02/08 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
HTML基本元素标签介绍
2022/02/28 HTML / CSS
一条 SQL 语句执行过程
2022/03/17 MySQL
Java数据结构之堆(优先队列)
2022/05/20 Java/Android
python内置模块之上下文管理contextlib
2022/06/14 Python