【问题标题】:Is Possible to set a timer on when a function should run可以在函数应该运行时设置计时器
【发布时间】:2021-05-17 23:21:09
【问题描述】:

我有一个按钮,当用户单击该按钮时,它会提交一个表单。但我只希望他们能够只点击一次。此外,该按钮应返回其原始状态,即 24 小时后再次变为可点击状态。

请问我该怎么做。这是表单和按钮,我考虑过添加一个事件侦听器,该事件侦听器在单击按钮后将其隐藏,并在 24 小时后再次显示。这可能吗?

<form action="/earn" method="post" onsubmit='disableButton()'><button type="submit" id='btn' class="btn btn-info font-18">Earn</button></form>

我有一个可以正常工作的倒计时,但是我如何设置它,当倒计时到达 00:00:00 时,应该运行特定的代码块

setInterval(function time(){
  var d = new Date();
  var hours = 24 - d.getHours();
  var min = 60 - d.getMinutes();
  if((min + '').length == 1){
    min = '0' + min;
  }
  var sec = 60 - d.getSeconds();
  if((sec + '').length == 1){
        sec = '0' + sec;
  }
  jQuery('#the-final-countdown p').html(hours+':'+min+':'+sec)
}, 1000);

【问题讨论】:

  • 只需添加一个持续时间为 24 小时的超时:setTimeout(() =&gt; {yourCode()}, 1000*60*60*24);

标签: javascript jquery node.js mongoose countdown


【解决方案1】:

我曾考虑添加一个事件侦听器,该侦听器在单击按钮后将其隐藏,并在 24 小时后再次显示。这可能吗?

是的,这很简单。

这里的代码会在按钮被点击后隐藏,然后在 24 小时后取消隐藏。这是在网页未刷新时工作的更简单的版本。为了让它在刷新后也能正常工作,你要么必须在服务器端控制它,要么使用 cookie 来记住它下次应该何时显示。

let button = document.getElementById("btn");
button.addEventListener("click", () => {
    button.style.visibility = "hidden";
    // show it again in 24 hours
    setTimeout(() => {
         button.style.display = "visible";
    }, 1000 * 60 * 60 * 24);
});

另外请记住,任何对软件稍有了解的人都可以击败这种级别的保护 - 这纯粹是为了让用户界面显示您想要的内容。如果您需要在接下来的 24 小时内阻止服务器上发生某些事情,那么您需要在服务器本身上强制执行该操作。您可能会使用与该用户关联的一些持久状态,然后每当您在服务器上收到此表单提交时,您将检查该持久状态以查看是否允许用户这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-17
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    相关资源
    最近更新 更多