我有2个html页面,movies.html和single.html。我通过href标记将movies.html的一些值传递给single.html,因此它与url一起使用,我可以在single.html页面中获取它。 下面是代码:
movies.html:
<a href="single.html?var1=abc&var2=xyz&var3=def">
因此,现在单击html页面中的href链接single.html?var1 = abc&var2 = xyz&var3 = def之后,这整个内容就会出现在网址中。 我的问题是如何使用JavaScript获取var1,var2和var3的值。
我已经在single.html中使用以下代码来获取参数:
var movieLink1 = window.location.href.split('?var1=')[1];
var movieLink2 = window.location.href.split('&var2=')[1];
var movieLink3 = window.location.href.split('&var3=')[1];
输出:
movieLink1 = var1=abc&var2=xyz&var3=def
movieLink2 = var2=xyz&var3=def
movieLink3 = var3=def
预期输出:
movieLink1 = abc
movieLink2 = xyz
movieLink3 = def
我没有得到预期的输出。
基本上abc,xyz和def是我的应用程序中的电影下载链接,因此,如果我单击single.html中的movieLink1按钮,则应下载400p分辨率的电影,movieLink2按钮应下载780p分辨率的电影,而movieLink3按钮应下载1080p分辨率的电影。在移动设备上可以正常工作,但是在笔记本电脑上单击任何按钮都可以下载1080p分辨率的电影。 我没有得到什么问题,如果有人可以帮助我,我会非常感激他们。
答案 0 :(得分:2)
您可以使用URLSearchParams
const searchParams = new URLSearchParams(window.location.search);
// access var1
const var1 = searchParams.get("var1");
答案 1 :(得分:1)
URLSearchParams是最流畅的解决方案。
如果您要寻找一种适用于所有浏览器的解决方案,则可以将 match()方法与正则表达式一起使用 ,如/var{n}=(\w+)(\W|$)/
,下的搜索结果捕获组的>索引1 将包含所需的参数值。
示例:
const movieLink1 = window.location.href.match(/var1=(\w+)(\W|$)/)[1]
const movieLink2 = window.location.href.match(/var2=(\w+)(\W|$)/)[1]
const movieLink3 = window.location.href.match(/var3=(\w+)(\W|$)/)[1]
输出:
movieLink1 = abc
movieLink2 = xyz
movieLink3 = def
答案 2 :(得分:0)
您可以使用此功能获取参数
const url= 'single.html?var1=abc&var2=xyz&var3=def'
function getparams(url){
const paramsobj={}
if(url.includes('&')){
const urlarray= url.split('?')
const parampairs =urlarray[1].split('&')
parampairs.forEach(p => {
const nwpair= p.split('=')
paramsobj[nwpair[0]]=nwpair[1]
});
}
if(!url.includes('&')){
const urlarray= url.split('#')
const keyvalue=urlarray[1].split('=')
const arr=keyvalue
let i=0
while(i<arr.length+2) {
key=keyvalue.shift()
value=keyvalue.shift()
paramsobj[key]=value
i++
}
}
return paramsobj
}
params=getparams(url)
console.log(params.var2)