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中的函数
Jan 22 Javascript
js中的值类型和引用类型小结 文字说明与实例
Dec 12 Javascript
微信JS接口汇总及使用详解
Jan 09 Javascript
跟我学习javascript的循环
Nov 18 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
Sep 14 Javascript
从0开始学Vue
Oct 27 Javascript
pc加载更多功能和移动端下拉刷新加载数据
Nov 07 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
Jan 21 Javascript
vue轮播图插件vue-concise-slider的使用
Mar 13 Javascript
vuejs移动端实现div拖拽移动
Jul 25 Javascript
javascript 原型与原型链的理解及实例分析
Nov 23 Javascript
vue中destroyed方法的使用说明
Jul 21 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安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
浅析php单例模式
2014/11/25 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
node.js操作mongodb学习小结
2015/04/25 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python下singleton模式的实现方法
2014/07/16 Python
简单介绍Python中的RSS处理
2015/04/13 Python
Django自定义认证方式用法示例
2017/06/23 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
查看python下OpenCV版本的方法
2018/08/03 Python
python实现趣味图片字符化
2019/04/30 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
教师专业理论水平的自我评价分享
2013/11/09 职场文书
幼儿教师工作感言
2014/02/14 职场文书
政治表现评语
2014/05/04 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
保密工作整改报告
2014/11/06 职场文书
沈阳故宫导游词
2015/01/31 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
关于 Python json中load和loads区别
2021/11/07 Python