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的一行代码轻松实现拖动效果
Dec 28 Javascript
JQuery实现鼠标滑过显示导航下拉列表
Sep 12 Javascript
使用GruntJS构建Web程序之合并压缩篇
Jun 06 Javascript
jQuery数据缓存用法分析
Feb 20 Javascript
Node.js插件安装图文教程
May 06 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
Sep 17 Javascript
AngularJS的Filter的示例详解
Mar 07 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
Mar 23 jQuery
vue+element tabs选项卡分页效果
Jun 29 Javascript
微信小程序实现锚点功能
Nov 20 Javascript
javascript执行上下文、变量对象实例分析
Apr 25 Javascript
JS创建或填充任意长度数组的小技巧汇总
Oct 24 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操作mysql数据库类
2014/12/08 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
PHP解压tar.gz格式文件的方法
2016/02/14 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
Nuxt.js开启SSR渲染的教程详解
2018/11/30 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
python 图像平移和旋转的实例
2019/01/10 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
Python matplotlib画曲线例题解析
2020/02/07 Python
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
毕业自我鉴定
2013/11/05 职场文书
工作表扬信的范文
2014/01/10 职场文书
好邻里事迹材料
2014/01/16 职场文书
自主招生推荐信范文
2014/05/10 职场文书
2014年导购员工作总结
2014/11/18 职场文书
2019年教师节:送给所有老师的祝福语
2019/09/05 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python
CSS布局之浮动(float)和定位(position)属性的区别
2021/09/25 HTML / CSS