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 相关文章推荐
超清晰的document对象详解
Feb 27 Javascript
理解JavaScript的caller,callee,call,apply
Apr 28 Javascript
js中call与apply的用法小结
Dec 28 Javascript
可自定义速度的js图片无缝滚动示例分享
Jan 20 Javascript
Bootstrap每天必学之折叠
Apr 12 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
Jun 04 Javascript
JS闭包的几种常见形式实例详解
Sep 16 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
Mar 01 Javascript
微信小程序开发之tabbar图标和颜色的实现
Oct 17 Javascript
vue-cli配置全局sass、less变量的方法
Jun 06 Javascript
js实现头像上传并且可预览提交
Dec 25 Javascript
JavaScript数组 几个常用方法总结
Nov 11 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
浅析php与数据库代码开发规范
2013/08/08 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
PHP面向对象详解(三)
2015/12/07 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
基于jQuery的js分页代码
2010/06/10 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
2018/09/03 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
详解elementUI中input框无法输入的问题
2020/04/27 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
Python中的文件和目录操作实现代码
2011/03/13 Python
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
最新个人职业生涯规划书
2014/01/22 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书