勘误版

function getQuery(key, url) {
url = url || window.location.href;
if (url.indexOf('#') !== -1)
url = url.substring(0, url.indexOf('#'));
var rts = [], rt;
var queryReg = new RegExp('(^|\\?|&)' + key + '=([^&]*)(?=&|$|#)', 'g');
while ((rt = queryReg.exec(url)) != null) {
rts.push(decodeURIComponent(rt[2]));
}
if (rts.length == 0) return null;
if (rts.length == 1) return rts[0];
return rts;
} function setQuery(key, value, url) { url = url || window.location.href;
var hash = ''; if (url.indexOf('#') !== -1)
hash = url.substring(url.indexOf('#')); url = url.replace(hash, '');
url = url.replace(new RegExp('(^|\\?|&)' + key + '=[^&]*(?=&|#|$)', 'g'), '');
value = isArray(value) ? value : [value]; for (var i = value.length - 1; i >= 0; i--) {
value[i] = encodeURIComponent(value[i]);
} var p = key + '=' + value.join('&' + key + '=');
return url + (/\?/.test(url) ? '&' : '?') + p + hash;
}

增强版,支持同名参数

function getQuery(key, url) {
url = url || window.location.href;
var rts = [], rt;
var queryReg = new RegExp('(^|\\?|&)' + key + '=([^&]*)(?=&|$|#)', 'g');
while ((rt = queryReg.exec(url)) != null) {
rts.push(decodeURIComponent(rt[2]));
}
if (rts.length == 0) return null;
if (rts.length == 1) return rts[0];
return rts;
} function setQuery(key, value, url) { url = url || window.location.href;
url = url.replace(new RegExp('(^|\\?|&)' + key + '=[^&]*(?=&|$|#)', 'g'), '');
value = value.splice ? value : [value]; for (var i = value.length - 1; i >= 0; i--) {
value[i] = encodeURIComponent(value[i]);
} var p = key + '=' + value.join('&' + key + '=');
return url + (/\?/.test(url) ? '&' : '?') + p;
}

利用正则表达式

function getQuery(key, url) {
var reg = new RegExp('^\\S*(\\?|&)' + key + '=([^&]*)\\S*$');
var l = url || window.location.href;
if (reg.test(l)) {
return decodeURIComponent(l.replace(reg, '$2'));
} else {
return null;
}
} function setQuery(key, value, url) {
var reg = new RegExp(key + '=[^&]*(?=&|$)');
var l = url || window.location.href;
if (reg.test(l)) {
return l.replace(reg, key + '=' + encodeURIComponent(value));
} else {
return l + (/\?/.test(l) ? '&' : '?') + key + '=' + encodeURIComponent(value);
}
}

javascript获取和设置URL中的参数的更多相关文章

  1. .NET 获取Get方式URL中的参数键值

    在Web开发中,我们常常会涉及到需要获取Get方式URL中的参数键值的情况,这里简单介绍三种方法: 第一种:常用的做法有使用JavaScript获取location.href后用正则表达式匹配获取此U ...

  2. js:通过正则匹配获取页面的url中的参数

    简介:获取页面参数 原生js: //通过正则匹配获取当前页面的url中的参数 function getUrlParam(name){ var reg = new RegExp("(^|&am ...

  3. 关于requestMapping 进行url映射实现小小知识点 以及如何获取请求的url中的参数

    requstMapping 用来处理url映射  可以作用在controller类上  也可以作用在方法上 经常使用的方式  通过接收一种映射关系 @RequestMapping("/del ...

  4. 获取当前页面url中的参数 coffeescript+node.js+angular

    获取当前url:@$window.alert @$location.url()获取参数(json格式)@$window.alert @$location.search().channel

  5. vue中如何不通过路由直接获取url中的参数

    前言:为什么要不通过路由直接获取url中的参数? vue中使用路由的方式设置url参数,但是这种方式必须要在路径中附带参数,而且这个参数是需要在vue的路由中提前设置好的. 相对来说,在某些情况下直接 ...

  6. JavaScript如何获取网页url中的参数

    我们可以自定义一个公共函数来实现网页url中的参数获取,返回的是一个数组 GetUrlRequest: function () { var url = decodeURI(location.searc ...

  7. javaScript获取url中的参数

    var urlTools = { //获取RUL参数值 getUrlParam: function(name) { /*?videoId=identification */ var params = ...

  8. 使用JavaScript获取URL中的参数(两种方法)

    本文给大家分享两种方法使用js获取url中的参数,其中方法二是使用的正则表达式方法,大家可以根据需要选择比较好的方法,废话不多说了,直接看详细介绍吧. 方法一: //取url参数 var type = ...

  9. 如何获取url中的参数并传递给iframe中的报表

    在使用报表软件时,用户系统左边一般有目录树,点击报表节点就会在右侧网页的iframe中显示出报表,同时点击的时候也会传递一些参数给网页,比如时间和用户信息等.如何使网页中的报表能够获取到传递过来的参数 ...

随机推荐

  1. AngularJS使用angular-formly进行表单验证

    当验证表单中有很多字段时,这时候可能希望把html的生成以及验证逻辑放到controller中,在页面,也许是这样的: <some-form fiedls="vm.someFields ...

  2. C#编程(十四)----------构造函数

    原文链接:http://blog.csdn.net/shanyongxu/article/details/46501683 构造函数 所谓的构造函数就是和类名重名的且没有返回值的方法. class P ...

  3. Swift:playground

    在介绍Playground之前,我先罗列一些本人认为有点重要然而零碎的知识点. 1. Swift语法.每句话之后不用加分号.但也能够加分号.但假设写在一行的话.必须加分号. 2. Swift严格要求变 ...

  4. 安装部署 Kubernetes 集群

    安装部署 Kubernetes 集群 阅读目录: 准备工作 部署 Master 管理节点 部署 Minion 工作节点 部署 Hello World 应用 安装 Dashboard 插件 安装 Hea ...

  5. .NetCore中EFCore for MySql整理

    一.MySql官方提供了Ef Core对MySql的支持,但现在还处于预览版 Install-Package MySql.Data.EntityFrameworkCore -Pre Install-P ...

  6. [转]linux最新分区方案

    FROM : http://www.cnblogs.com/chenlulouis/archive/2009/08/27/1554983.html 我的服务器是500G.最重要的是/var分区一定要大 ...

  7. window.name实现的跨域数据传输 JavaScript跨域总结与解决办法

    原文地址:  http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html#m4 什么是跨域 1.document.domain+ifr ...

  8. 全景分割panopticapi使用

    文件解析 参考github:https://github.com/cocodataset/panopticapi 输入图像:

  9. vRealize Automation部署虚机如果出错怎么办?

    以下地方的日志可以查看: 1. Requests –> Choose my request -> View Detail –> Execution Information. 2. I ...

  10. 大数据开发实战:Hadoop数据仓库开发实战

    1.Hadoop数据仓库架构设计 如上图. ODS(Operation Data Store)层:ODS层通常也被称为准备区(Staging area),它们是后续数据仓库层(即基于Kimball维度 ...