我正在开发一个工具,它接受URL中的值参数并对它们做一些事情。
我的问题是,我似乎无法使用document.location来显示我所追求的具体值,例如:
www.examplesite.com?yourname=gilgilad
我想使用document.location.search并将其放在var中,我需要将var的值设为“gilgilad”。
甚至可以使用location.search吗?
答案 0 :(得分:10)
location.search
将在包含它的问号后返回。所以有通用的js来获取第一个参数的值(即使url有更多的参数):
var desire = location.search.slice(1).split("&")[0].split("=")[1]
示例:让我们记下网址http://example.com?name=jon&country=us
location.search
将等于?name=jon&country=us
.split("&")[0]
将其分为两个字符串(?name=jon
和country=us
),并将其分为第一个.split("=")[1]
将name=jon
分为name
和jon
,然后选择第二个。完成!答案 1 :(得分:1)
一种更通用的解决方案,用于拆分location.search查询参数并将其转换为对象:
var a = location.search.split("&");
var o = a.reduce(function(o, v) {
var kv = v.split("=");
kv[0] = kv[0].replace("?", "");
o[kv[0]] = kv[1];
return o;
},
{});
答案 2 :(得分:0)
let url = new URL('www.examplesite.com?yourname=gilgilad');
let searchParams = new URLSearchParams(url.search);
console.log(searchParams.get('yourname'));
您还可以考虑直接为用户window.location
或window.location.search
let searchParams = new URLSearchParams(window.location.search);
console.log(searchParams.get('yourname'));
答案 3 :(得分:-1)
使用document.location.search:
制作?yourname=gilgilad
window.location.search = 'yourname=gilgilad';
这里是jsfiddle:http://jsfiddle.net/t81k3bgc/
确保使用控制台,然后使用[run]
。你会看见: