用 JavaScript 获取 URL 中任意存在的参数

2015-03-28 11:31:54 +08:00
 iugo
- 新手, 期待意见.
- 说明: 纯 JavaScript 实现, 没有用 jQuery.
- 代码: https://gist.github.com/iugo/736f41be68234f9ef654

想将其封装为一个类, 达成

var id = new valueURL("id") // id = 123

这样的效果. 但是还不知道该怎么下手.
2560 次点击
所在节点    分享创造
7 条回复
loading
2015-03-28 11:42:20 +08:00
这应该发 问与答,创造问题不属于创造!
iugo
2015-03-28 11:54:37 +08:00
@loading 刚才我想了想, 没有作为类, 而是先写成了函数. JavaScript 怎么写类不明白. 不过功能已经实现, 可以正常用.

我的写法和网上搜索到的不一样, 希望从另外一个角度给大家带来点什么东西.
zrp1994
2015-03-28 12:04:46 +08:00
@iugo 草草写了个,你感受下
var parseQuery = function(string) {
var urlSplit = string.split('?'), querySplit = [], queries = {};
if(urlSplit.length < 2 || !urlSplit[1])
return null;
querySplit = urlSplit[1].split('&');
for (var i = 0; i < querySplit.length; i++) {
var query = querySplit[i].split('=');
if(query.length > 0 && query[0])
queries[query[0]] = query[1];
};
return queries;
}

console.log(parseQuery('https://www.baidu.com/s?ie=UTF-8&wd=%E6%B5%8B%E8%AF%95'));
console.log(parseQuery('https://www.baidu.com/s?ie=UTF-8&=%E6%B5%8B%E8%AF%95'));
console.log(parseQuery('https://www.baidu.com/s?ie=UTF-8&wd='));
console.log(parseQuery('https://www.baidu.com/s?ie=UTF-8&='));
console.log(parseQuery('https://www.baidu.com/s?ie=UTF-8'));
console.log(parseQuery('https://www.baidu.com/s?'));
console.log(parseQuery('https://www.baidu.com/s'));

测试结果:
{ ie: 'UTF-8', wd: '%E6%B5%8B%E8%AF%95' }
{ ie: 'UTF-8' }
{ ie: 'UTF-8', wd: '' }
{ ie: 'UTF-8' }
{ ie: 'UTF-8' }
null
null
ETiV
2015-03-28 12:36:48 +08:00
nowgoo
2015-03-28 13:37:02 +08:00
function get_value(name, url) {
return (url.substr(url.indexOf('?')).substr(1).match(new RegExp('(?:^|&)' + name + '=([^&]*)(?:&|$)', 'i')) || [])[1] || '';
}
sumhat
2015-03-28 21:58:40 +08:00
楼上的几位,对于有 # 的 URL,你们的代码肯定挂
iugo
2015-09-30 16:37:33 +08:00
@sumhat 在 @ETiV 的代码中, 稍微修改下正则应该就会好.

/[?&]:?([^=]+)=([^&#]*)/g

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/179888

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX