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 相关文章推荐
jquery 常用操作整理 基础入门篇
Oct 14 Javascript
jquery对元素拖动排序示例
Jan 16 Javascript
写给小白的JavaScript引擎指南
Dec 04 Javascript
vue+axios实现登录拦截的实例代码
May 22 Javascript
JS图片轮播与索引变色功能实例详解
Jul 06 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
Aug 19 Javascript
微信小程序实现九宫格抽奖
Apr 15 Javascript
原生JS实现的跳一跳小游戏完整实例
Jan 27 Javascript
详解javascript replace高级用法
Feb 17 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
Mar 08 Javascript
js中Generator函数的深入讲解
Apr 07 Javascript
基于Node.js的大文件分片上传示例
Jun 19 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中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
微信小程序发送订阅消息的方法(php 为例)
2019/10/30 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
JS启动应用程序的一个简单例子
2008/05/11 Javascript
JS 遮照层实现代码
2010/03/31 Javascript
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
VUE中使用MUI方法
2019/02/12 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
Python画图学习入门教程
2016/07/01 Python
Python3标准库总结
2019/02/19 Python
Python3模拟登录操作实例分析
2019/03/12 Python
Django实现基于类的分页功能
2019/10/31 Python
如何基于python实现归一化处理
2020/01/20 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
python 监控logcat关键字功能
2020/09/04 Python
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
英国著名的药妆网站:Escentual
2016/07/29 全球购物
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
节约用水演讲稿
2014/05/21 职场文书
公开致歉信
2019/06/24 职场文书