如何使用Java脚本从当前网址获取多个网址参数

时间:2020-06-06 17:49:12

标签: javascript html

我有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分辨率的电影。 我没有得到什么问题,如果有人可以帮助我,我会非常感激他们。

3 个答案:

答案 0 :(得分:2)

您可以使用URLSearchParams

const searchParams = new URLSearchParams(window.location.search);

// access var1
const var1 = searchParams.get("var1");

答案 1 :(得分:1)

如果您只需要支持现代浏览器而不需要Internet Explorer,那么wiesson推荐的

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)
相关问题