首页 > 解决方案 > 节目

当满足特定的 URL 参数时

问题描述

我在 Google 表格中有一个表单,它将 URL 参数传递给一个页面,然后该页面应该根据 URL 参数显示内容。

因此,如果有人在 Google Sheet 中检查“item 1”和“item 2”,参数将按如下方式传递:

https://my-url.com/?item1=value1&item2=value2

现在有几个 div 容器,使用 css 设置为 display:none。当满足 URL 参数时,隐藏的 div 容器应该会显示出来。所以html是:

<div class="hidden" id="value1">This content should show, when the URL parameter value 1 is passed</div>
<div class="hidden" id="value2">This content should show, when the URL parameter value 2 is passed</div>

我在网上找到了一些代码,它几乎可以做到这一点,但它一次只能显示一个 div:https ://jennamolby.com/how-to-display-dynamic-content-on-a-page-using -url参数/

我的问题是,对于每个传递的参数,必须显示一个字段。

谁能帮我这个?无论如何,我真的不是 js 专家。

标签: javascriptjqueryurl-parametersdynamic-content

解决方案


你可以这样做:

$.each(getUrlVars(), function(i, x) {
  $('#' + x).show();
})

function getUrlVars() {
  var vars = {},
    hash;
  var hashes = url.slice(url.indexOf('?') + 1).split('&');
  for (var i = 0; i < hashes.length; i++) {
    hash = hashes[i].split('=');
    //vars.push(hash[0]);
    vars[hash[0]] = hash[1];
  }
  return vars;
}

getUrlVars取自this answer,并稍作修改。

演示

var url = "https://my-url.com/?item1=value1&item2=value2"; //replace with window.location.href
$.each(getUrlVars(), function(i, x) {
  $('#' + x).show();
})



function getUrlVars() {
  var vars = {},
    hash;
  var hashes = url.slice(url.indexOf('?') + 1).split('&');
  for (var i = 0; i < hashes.length; i++) {
    hash = hashes[i].split('=');
    //vars.push(hash[0]);
    vars[hash[0]] = hash[1];
  }
  return vars;
}
.hidden {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="hidden" id="value1">This content should show, when the URL parameter value 1 is passed</div>
<div class="hidden" id="value2">This content should show, when the URL parameter value 2 is passed</div>


推荐阅读