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 相关文章推荐
[HTML/CSS/Javascript]WWTJS
Sep 25 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
Dec 12 Javascript
jQuery中detach()方法用法实例
Dec 25 Javascript
JavaScript中Function详解
Feb 27 Javascript
浅谈javascript中new操作符的原理
Jun 07 Javascript
jQuery实现微信长按识别二维码功能
Aug 26 Javascript
js实现表单及时验证功能 用户信息立即验证
Sep 13 Javascript
jQuery实现链接的title快速出现的方法
Feb 20 Javascript
yarn的使用与升级Node.js的方法详解
Jun 04 Javascript
AngularJS实现的输入框字数限制提醒功能示例
Oct 26 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
Jun 18 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
Oct 27 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
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
js自带函数备忘 数组
2006/12/29 Javascript
jquery中的$(document).ready()与window.onload的区别
2009/11/18 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
js获取url参数值的两种方式
2013/09/10 Javascript
javascript根据像素点取位置示例
2014/01/27 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
python将回车作为输入内容的实例
2018/06/23 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
python装饰器练习题及答案
2019/11/01 Python
django框架两个使用模板实例
2019/12/11 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
Python实现一个优先级队列的方法
2020/07/31 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
一道Delphi上机题
2012/06/04 面试题
幼儿园教育教学反思
2014/01/31 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
员工教育培训协议书
2014/09/27 职场文书
三八妇女节寄语
2015/02/27 职场文书
宣传稿格式范文
2015/07/23 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫