JavaScript操作 url 中 search 部分方法函数

 更新时间:2016年06月15日 11:28:14   作者:FungLeo  
这篇文章主要介绍了JavaScript操作 url 中 search 部分方法函数的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下

前言

首先,我们需要知道什么是 search , search 是 window.location 的一个属性.举个例子:

首先,我们这里有一个 url,是 http://www.a.com/list/2.html?page=2&color=4&size=3#pic.

我们访问访问这个地址,打开控制台,输入window.location,会得到如下图的结果

location结果

如上,我们要操作的就是上图中方框框出来的这个部分.

为什么要操作这个?

例如,我在第二页,需要跳转到第三页,就需要把上面的 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 部分方法函数的全部叙述,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

您可能感兴趣的文章:

相关文章

  • JS实现数组去重方法总结(六种方法)

    JS实现数组去重方法总结(六种方法)

    这篇文章给大家总结下JS实现数组去重方法(六种方法),面试中也经常会遇到这个问题。文中给大家引申的还有合并数组并去重的方法,感兴趣的朋友跟随脚本之家小编一起学习吧
    2017-07-07
  • JS与CSS3实现图片响应鼠标移动放大效果示例

    JS与CSS3实现图片响应鼠标移动放大效果示例

    这篇文章主要介绍了JS与CSS3实现图片响应鼠标移动放大效果,结合实例形式分析了javascript与css3响应鼠标事件动态修改页面元素属性实现图片放大效果相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • echarts实现雷达图的详细步骤

    echarts实现雷达图的详细步骤

    这篇文章主要给大家介绍了关于echarts实现雷达图的详细步骤,雷达图(Radar Chart)是一种信息丰富的可视化工具,其中多个变量(三个或更多)在二维平面上进行比较,文中给出了完整的代码示例,需要的朋友可以参考下
    2024-01-01
  • 使用console进行性能测试

    使用console进行性能测试

    各大浏览器内置的开发工具,都提供了一个console对象。它主要有两个作用:显示网页代码运行时的错误信息。提供了一个命令行接口,用来与网页代码互动。下面我们就来详细研究下如何使用console进行性能测试。
    2015-04-04
  • 关于JSONP跨域请求原理的深入解析

    关于JSONP跨域请求原理的深入解析

    JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题,这篇文章主要给大家介绍了关于JSONP跨域请求原理的相关资料,需要的朋友可以参考下
    2022-01-01
  • javascript中加号(+)操作符的一些神奇作用

    javascript中加号(+)操作符的一些神奇作用

    这篇文章主要介绍了javascript中加号(+)操作符的一些神奇作用,真的很神奇,例如加号可以转换数据类型,可以把日期转成整数等,需要的朋友可以参考下
    2014-06-06
  • Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码

    Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码

    跟踪一些最基本的客户端访问信息,这里将一些公用的代码总结下来,需要的朋友可以参考下
    2016-06-06
  • JS基于ES6新特性async await进行异步处理操作示例

    JS基于ES6新特性async await进行异步处理操作示例

    这篇文章主要介绍了JS基于ES6新特性async await进行异步处理操作,结合实例形式分析了async await进行异步处理操作的相关原理、步骤与注意事项,需要的朋友可以参考下
    2019-02-02
  • js中时间格式化的几种方法

    js中时间格式化的几种方法

    这篇文章给大家分享了关于js中时间格式化的几种方法,有需要的朋友们可以参考学习下。
    2018-07-07
  • MvcPager分页控件 适用于Bootstrap

    MvcPager分页控件 适用于Bootstrap

    这篇文章主要为大家详细介绍了MvcPager分页控件,修改后适用于Bootstrap,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06

最新评论