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 全选效果实现代码
Mar 23 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
Sep 14 Javascript
jquery乱码与contentType属性设置问题解决方案
Jan 07 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
Nov 05 Javascript
深入浅析JavaScript中的scrollTop
Jul 11 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
Aug 03 Javascript
jquery Banner轮播选项卡
Dec 26 Javascript
bootstrap配合Masonry插件实现瀑布式布局
Jan 18 Javascript
通过一个简单的例子学会vuex与模块化
Nov 22 Javascript
vue实现点击当前标签高亮效果【推荐】
Jun 22 Javascript
JavaScript函数的特性与应用实践深入详解
Dec 30 Javascript
vue data恢复初始化数据的实现方法
Oct 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
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
php简单实现MVC
2015/02/05 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
php Session无效分析资料整理
2016/11/29 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
JavaScript中通过提示框跳转页面的方法
2016/02/14 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
linux下安装easy_install的方法
2013/02/10 Python
Python 多进程和数据传递的理解
2017/10/09 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
复古服装:RetroStage
2019/05/10 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
国际政治个人自荐信范文
2013/11/26 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
大学毕业生个人自荐信范文
2014/01/08 职场文书
趣味比赛活动方案
2014/02/15 职场文书
青安岗事迹材料
2014/05/14 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
小程序实现筛子抽奖
2021/05/26 Javascript
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android
配置Kubernetes外网访问集群
2022/03/31 Servers
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL
python语言中pandas字符串分割str.split()函数
2022/08/05 Python