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解析与序列化json数据(一)json.stringify()的基本用法
Feb 01 Javascript
javascript对下拉列表框(select)的操作实例讲解
Nov 29 Javascript
jquery select 设置默认选中的示例代码
Feb 07 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
Aug 15 Javascript
jQuery入门介绍之基础知识
Jan 13 Javascript
jQuery动画与特效详解
Feb 01 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
Oct 12 Javascript
基于jquery实现图片上传本地预览功能
Jan 08 Javascript
vue中七牛插件使用的实例代码
Jul 28 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
Dec 18 Javascript
详解webpack模块加载器兼打包工具
Sep 11 Javascript
Angular PWA使用的Demo示例
Jan 31 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
一个程序下载的管理程序(四)
2006/10/09 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
php+mysql实现无限级分类
2015/11/11 PHP
php伪静态验证码不显示的解决方案
2019/09/26 PHP
PHP扩展类型及安装方式解析
2020/04/27 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
Ext面向对象开发实践(续)
2008/11/18 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
Python循环语句中else的用法总结
2016/09/11 Python
pygame实现弹力球及其变速效果
2017/07/03 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
使用python实现kNN分类算法
2019/10/16 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
《神奇的克隆》教学反思
2014/04/10 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python