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 相关文章推荐
javascript实现des解密加密全过程
Apr 03 Javascript
JavaScript获取table中某一列的值的方法
May 06 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
Apr 01 Javascript
JavaScript实现Fly Bird小游戏
Dec 15 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
Feb 15 Javascript
react native带索引的城市列表组件的实例代码
Aug 08 Javascript
javascript 日期相减-在线教程(附代码)
Aug 17 Javascript
jQuery插件Validation表单验证详解
May 26 jQuery
vue使用v-if v-show页面闪烁,div闪现的解决方法
Oct 12 Javascript
js实现一个简易计算器
Mar 30 Javascript
微信小程序swiper禁止用户手动滑动代码实例
Aug 23 Javascript
基于JavaScript判断两个对象内容是否相等
Jan 10 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
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
详解PHP的Yii框架中的Controller控制器
2016/03/29 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
React Native验证码倒计时工具类分享
2017/10/24 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
给 TensorFlow 变量进行赋值的方式
2020/02/10 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
《故都的秋》教学反思
2014/04/15 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
2014年党建工作总结
2014/11/11 职场文书
幼儿园六一儿童节演讲稿
2015/03/19 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
python 实现mysql自动增删分区的方法
2021/04/01 Python
HTML常用标签超详细整理
2022/03/19 HTML / CSS
css样式important规则的正确使用方式
2022/06/10 HTML / CSS