【问题标题】:Append Query String From Variable To Every URL将变量中的查询字符串附加到每个 URL
【发布时间】:2015-04-29 23:07:58
【问题描述】:

我创建了一个查询字符串并将其附加到 URL,如下所示:

// HTML from index.html
<input type="button" value="Yes" onclick="redirect(this);" id="YES" class="btn btn-primary btn-lg">
<input type="button" value="No" onclick="redirect(this);" id="NO" class="btn btn-primary btn-lg">
// JS on index.html
function redirect(e){

    var mapPg = "map.html";
    var qString = "?choice=";
    location.href = mapPg + qString + e.id;

}

map.html 页面开始,我想获取该查询字符串并将其传递到除 index.html 页面之外的每个 URL。

当用户点击price.html pg 时,它将使用查询字符串调用一个函数,该函数将拉入数据以获得“是”的答案。 “否”的答案也是如此。

我不知道如何在点击时将查询字符串附加到每个 pg 的 URL。

导航是一个被拉入的 JavaScript 包含。我在导航中的所有&lt;a&gt; 中添加了一个qString 类,以防更容易定位它们。

【问题讨论】:

  • 不能设置 cookie 或 sessionStorage 或 localStorage?

标签: javascript append query-string


【解决方案1】:

jQuery 是一种选择吗?如果是这样……

<script type="text/javascript">
$(document).ready(function() {
    $("a").prop("href", function() { return this.href + location.search; })
});
</script>

【讨论】:

  • 这个答案有点奏效,但它禁用了所有&lt;a&gt; 标签。我使用了这个答案并将其与 @Barmar 的变量结合起来。
【解决方案2】:

您可以将其添加到每个页面:

window.addEventHandler("load", function() {
    var match = location.search.match(/\bchoice=([^&]*)/);
    if (!match) {
        return;
    }
    var choice = match[1];
    var navlinks = document.getElementsByClassName("qString");
    for (var i = 0; i < navlinks.length; i++) {
        if (navlinks[i].search == '') {
            navlinks[i].search = '?choice=' + choice;
        } else {
            navlinks[i].search += '&choice=' + choice;
        }
    }
}

【讨论】:

  • 这个由于某种原因没有工作。我真的很感谢你的帮助。我使用了您的变量和@ShawnJacobson 的答案的组合。
【解决方案3】:
location.href = mapPg + qString + e.id;

这里的代码需要更改。 e.getAttribute("id")

【讨论】:

    【解决方案4】:

    谢谢@ShawnJacobson 和@Barmar。虽然个别答案不能正常工作,但我将两者结合起来得出了一个有效的解决方案。

    var navlinks = document.getElementsByClassName("qString");
        $(navlinks).prop("href", function() { return this.href + location.search; })
    

    Shawn 的回答有些奏效,但它禁用了所有 &lt;a&gt; 标记。 Barmar 的回答不起作用,但在看到变量 var navlinks 之后,它让我知道该怎么做。

    非常感谢您帮助我们找到答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-04
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 1970-01-01
      • 2012-06-14
      相关资源
      最近更新 更多