【问题标题】:Season (i.e. summer/winter) dependent hyperlinks季节(即夏季/冬季)相关超链接
【发布时间】:2017-10-26 12:12:25
【问题描述】:

如何在夏季(即https://example.net/summer)和冬季(即https://example.net/winter)创建一个指向不同端点的超链接?只需要在客户端完成,无需 PHP 等。假设夏天是从 4/15 到 9/15,冬天是从 9/16 到 4/14,但是,确切的日期并不重要,如果更容易可以稍微改变一下。

编辑。我不能真正相信这个解决方案,因为 moment() 推荐是由 Quentin Roger 提供的。

<a id="link" href="javascript:void(0)">Click Me</a>

$("#link").click(function() {
    window.location = moment().isBetween(moment("2017-05-01"), moment("2017-09-01"))
    ?'https://example.net/summer'
    :'https://example.net/winter';
});

【问题讨论】:

  • 只是一个提示:仅使用客户的日期这样做是不可靠的,因为它可能设置为错误的值。您应该使用自定义服务器脚本或任何 API 或服务来检索可靠的日期
  • @Kaddath 是的,但这是可以接受的。冬季页面将有返回夏季的链接,从夏季到冬季也是如此,目的只是让它们最初到达我们“认为”正确的页面。
  • 请提供minimal reproducible example 来说明您的尝试。
  • @AlanLarimer 见原帖底部。

标签: jquery date hyperlink momentjs


【解决方案1】:

你可以在设置 href 属性之前做一些日期比较

window.addEventListener("load", function() {
  let anchor = document.getElementById("season_dependant");
  // Get current Date:
  let date = new Date();
  
  // consider two dates as boundaries, they must be the same year
  let start_date = new Date();
  start_date.setMonth(3); // month index (-1)
  start_date.setDate(15); // day of month
  // => 15th, April of current year
  
  let end_date = new Date();
  end_date.setMonth(9); // month index (-1)
  end_date.setDate(1); // day of month
  // => 1st, October of current year
  
  // NOTE: must be start_date < end_date for this to work
  
  if (date > start_date && date < end_date) {
    // If inside period:
    anchor.href = "/summer";
  } else {
    // If outside period:
    anchor.href = "/winter";
  }
});
&lt;a id="season_dependant"&gt;link&lt;/a&gt;

【讨论】:

  • 不错的原生 JavaScript 解决方案
  • @user1032531 如果你不关心浏览器的兼容性,你不应该再使用 var 了。而是使用letconst
  • 我以前从未听说过let。会做。此外,您的解决方案不会对年份进行硬编码。谢谢!
  • 是的,我没有设置年份,以便 Date 的每个实例都具有相同的年份(当前年份)。如果我这样做了,您将不得不每年更新您的脚本
【解决方案2】:

我想我误解了一些东西,但是如果您想根据基于日期的条件更新链接。您可以执行以下操作(使用 momentjs)。 我让你改善条件,以确定你是否在夏天;)

if (moment().isBetween(moment("2017-05-01"),moment("2017-09-01"))) {
  $("#link").attr('href', "https://example.net/summer").html('summer');
} else {
  $("#link").attr('href', "https://example.net/winter").html('winter');
}

http://jsfiddle.net/ubdxLeb9/1/

【讨论】:

  • 谢谢。我不知道moment()
  • 没问题,momentjs是一个很好的浏览器兼容性库。乐于助人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
  • 2021-03-27
  • 2010-12-18
  • 2019-06-18
相关资源
最近更新 更多