【问题标题】:Javascript Passing Parameters When Clicked on Link On Another Page单击另一个页面上的链接时的Javascript传递参数
【发布时间】:2026-02-11 06:20:04
【问题描述】:

我在我的网站上实现了一个滑块,并希望在单击另一个页面上的链接时到达特定值:

这是我要更改的脚本和参数:

$("#screeningSlider").ionRangeSlider({
    hide_min_max: true,
    keyboard: true,
    from: 20,
    min: 1,
    max: 2000,
    step: 0,
    grid_num: 4,
    prettify_separator: ",",
    postfix: " Units",
    max_postfix: "+",
    force_edges: true,

});

所以当在另一个页面上时,我想点击一个按钮,让我登陆这个页面,但是参数 FROM 是 10 而不是上面的默认值。这只应在从该特定按钮中选择时发生。

这是我的带有滑块的网站:http://therrd.com/screening.html#tenant-Screening

【问题讨论】:

  • 可以分享一下你试过的代码吗?
  • 你可能只是传递一个 URL 参数,然后使用 javascript 来获取和设置它。

标签: javascript jquery html twitter-bootstrap parameter-passing


【解决方案1】:

如果不以其他形式存储 JavaScript 值,然后将其解析回 JavaScript,则实际上不可能在页面之间共享 JavaScript 值。

您可以使用 URL 参数,然后解析传入的 URL 并从那里导入默认的 from 值。

<a href='http://www.yoursite/?from=10'>Referral </a>

这样做的缺点是,很明显,任何人都可以偷看您的 URL,然后尝试玩弄您的系统(想想如果他们将其设置为 ?from=0 而您没有防范会发生什么)。您还需要防范注入攻击。

您可以在他们单击特定按钮后使用localStorage 设置键,然后在加载主页时检查localStorage 中的该键以获得预期的默认from 值。

为特殊链接设置点击值:

$('#link').on('click', function(){
  localStorage.setItem('fromValue', 10);
});

并在加载时为结果页面检索它:

var fromValue = localStorage.getItem('fromValue')
if (fromValue) { /* adjust the slider's default from value*/ }

【讨论】:

  • 这似乎是一个更短暂的用例,我可能会使用sessionStorage 而不是localStorage。同样,由于我们正在跟踪一个链接,因此在我们检查它之后删除该值可能会很好,以便将来对不是来自该链接的页面的访问使用正常的默认值。虽然使用存储而不是通过查询字符串传递它更加隐藏,但它仍然需要验证,如果有人试图破坏系统,他们将能够通过浏览器控制台弄乱存储。
【解决方案2】:

如果你不想使用服务器端,你可以这样做

[已编辑]

1 - 设置链接

<a href="yourpage.html?slide=10">Go</a>

2 - 在 yourpage.html 中设置函数

  vals = {max: 100, min: 0, def: 20} //use your own values here for max min and def
  var param = window.location.href.split("slide=");
  slide = isNaN(param[param.length - 1]) || 
          param[param.length - 1] > vals.max ||
          param[param.length - 1] < vals.min ? vals.def : param[param.length - 1];
          //check if there is a url param, if it's a number and if it's in range      

  $("#screeningSlider").ionRangeSlider({
        hide_min_max: true,
        keyboard: true,
        from: slide,
        min: 1,
        max: 2000,
        step: 0,
        grid_num: 4,
        prettify_separator: ",",
        postfix: " Units",
        max_postfix: "+",
        force_edges: true,

  });

【讨论】:

  • 良好、干净的解决方案。
  • 未经验证,这是一个非常粗略的方法。您允许任何人将值注入您页面的 Javascript。如果他们将slide 设置为恶意值或函数怎么办?
  • @DaseinA 非常感谢您提供有关方向的建议。我在我的代码中实现了它并且效果很好。但是现在我遇到了另一个问题,当我从这个新创建的按钮之外的任何其他方式登陆这个特定页面时,我如何才能到达哪里?默认 FROM 参数应该是原来的 20?
  • @Jaser 根据是否有url参数设置变量。使用长度属性来检查:if (slide.length === 1) slide = default;。还像其他人说的那样执行一些验证,所以验证将是:if (slide.length === 1 || isNaN(slide[slide.length - 1])) slide = default;。祝你好运!
  • @DaseinA 所以这是我遇到问题的地方:因此,使用您提供的代码,一切正常,除了假设出现的某些产品没有出现。在提供的链接上查看我的代码:codeshare.io/MeJQi 产品通过页面的 html 与特定的 div 标签连接。我现在遇到的主要问题是没有显示基于该值的正确页面。 So when selecting that particular link, the show product should be "product25" and the default package should be "product1"
最近更新 更多