内容简介:常用URL参数操作方法
获取单个参数
/** * [getParam ] * @param {String} name * @param {String} url [default:location.href] * @return {String|Boolean} */ function getParam(name, url) { if(typeof name !== 'string') return false; if (!url) url = window.location.href; // 当遇到name[xx]时,对方括号做一下转义为 name\[xxx\],因为下面还需要使用name做正则 name = name.replace(/[\[\]]/g, '\\$&'); var regex = new RegExp('[?&]' + name + '(=([^]*)|&|#|$)'); var results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); } getParam('query','https://juejin.im/search?query=hello&time=2017-11-12') // output: // "hello"
设置单个参数
/** * [setParam 设置单个参数] * @param {String} name * @param {String|Number} val * @return {String|Boolean} */ function setParam(name, val, url) { if(typeof name !== 'string') return false; if (!url) url = window.location.href; var _name = name.replace(/[\[\]]/g, '\\$&'); var value = name + '=' + encodeURIComponent(val); var regex = new RegExp(_name + '=[^&]*'); var urlArr = url.split('#'); var result = ''; if(regex.exec(url)){ result = url.replace(regex, value); }else{ result = urlArr[0]+'&'+value+ (urlArr[1] || ''); } return result } setParam('query','world','https://juejin.im/search?query=hello&time=2017-11-12') // output: // "https://juejin.im/search?query=world&time=2017-11-12"
移除单个参数
/** * [removeParam 移除单个参数] * @param {String} name * @param {String} url [default:location.href] * @return {String|Boolean} */ function removeParam(name, url) { if(typeof name !== 'string') return false; if (!url) url = window.location.href; var urlparts = url.split('?'); var prefix = encodeURIComponent(name + '='); var pars = urlparts[1].split(/[&;]/g); var i = 0, len = pars.length; for (; i < len; i++) { if (encodeURIComponent(pars[i]).lastIndexOf(prefix, 0) !== -1) { pars.splice(i, 1); } } url = urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : ''); return url; } removeParam('query','https://juejin.im/search?query=hello&time=2017-11-12') // output: // "https://juejin.im/search?time=2017-11-12"
获取多个参数
/** * [getParams 获取多个参数] * @param {String} names [多个用空格分割] * @param {String} url [default:location.href] * @return {[String|Boolean]} */ function getParams(names, url) { if(typeof name !== 'string') return false; var names = names.split(' '); var result = {}; var i = 0, len = names.length; if (names.length === 0) return false; for (; i < len; i++) { result[names[i]] = getParam(names[i], url); } return result; } getParams('query time','https://juejin.im/search?query=hello&time=2017-11-12') // output: // {query: "hello", time: "2017-11-12"}
设置多个参数
/** * [setParams 设置多个参数] * @param {Object} obj * @param {String} url [default:location.href] * @return {[String|Boolean]} */ function setParams(obj, url) { var result = url || ''; if (Object.prototype.toString.call(obj) !== '[object Object]') return false; for (var name in obj) { result = setParam(name, obj[name], result); } return result; } setParams({a:111,b:222,query:'world'},'https://juejin.im/search?query=hello&time=2017-11-12') // output: // "https://juejin.im/search?query=world&time=2017-11-12&a=111&b=222"
移除多个参数
/** * [removeParams 移除多个参数] * @param {String} names [多个用空格分割] * @param {String} url [default:location.href] * @return {[String|Boolean]} */ function removeParams(names, url) { var result = url || ''; var names = names.split(' '); var i = 0, len = names.length; if (names.length === 0) return false; for (; i < len; i++) { result = removeParam(names[i], result); } return result; } removeParams('query time','https://juejin.im/search?query=hello&time=2017-11-12') // output: // "https://juejin.im/search"
url hash 操作
/** * [getHash 方法] * @param {[String]} url [default:location.href] * @return {[String]} */ function getHash(url) { return decodeURIComponent(url ? url.substring(url.indexOf('#') + 1) : window.location.hash.substr(1)); } /** * [setHash 方法] * @param {String} hash */ function setHash(hash) { window.location.replace('#' + encodeURIComponent(hash)); } /** * [removeHash 方法] */ function removeHash() { window.location.replace('#', ''); }
如果发现有BUG,请前往 GitHub 提 issue
如果觉得本文对您有帮助,请给个赞。(๑•ᴗ•๑)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Nmap常用参数
- 15个最常用的GCC编译器参数
- Spring MVC常用客户端参数接收方式
- ORACLE数据库EXPDP/IMPDP常用参数
- 面试常问的,JVM常用参数以及命令,瞧,你又不会了!
- TypeScript 中的命名参数、可选参数、默认参数
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
剑指Offer:名企面试官精讲典型编程题(第2版)
何海涛 / 电子工业出版社 / 2017-5 / 65.00
《剑指Offer:名企面试官精讲典型编程题(第2版)》剖析了80个典型的编程面试题,系统整理基础知识、代码质量、解题思路、优化效率和综合能力这5个面试要点。《剑指Offer:名企面试官精讲典型编程题(第2版)》共分7章,主要包括面试的流程,讨论面试每一环节需要注意的问题;面试需要的基础知识,从编程语言、数据结构及算法三方面总结程序员面试知识点;高质量的代码,讨论影响代码质量的3个要素(规范性、完整......一起来看看 《剑指Offer:名企面试官精讲典型编程题(第2版)》 这本书的介绍吧!