javascript - if else 条件的问题

标签 javascript jquery

当页面打开时,它会自动设置执行任务的超时时间。 我想要的是在事件发生时更改时间。如果用户单击按钮,则会在单击后立即更改时间。

如果用户不执行任何操作,页面应在给定时间后自动刷新,如果用户单击“#b1”,则应中断初始超时并以其他时间设置开始新的超时

我已经尝试了前面的代码,但它只执行最后一个警报。 我怎样才能做到这一点?

var clicked = 0;
var time = '';

$('#b1').click(function() {
  clicked = 1;
});

if (clicked == 1) {
  time = 10;
  setTimeout(function() {
    alert('clicked');
  }, time);
} else {
  time = 10000;
  setTimeout(function() {
    alert('nothingDone');
  }, time);
}

最佳答案

定义一个全局变量,其中setTimeout为值,如果用户点击#b1元素,则以变量为参数调用clearTimeout(),然后将变量设置为事件处理程序中的 setTimeout() 调用

$(function() {

  var clicked = 0;
  var time = '';
  var timer;

  function updateTimer() {
    time = 10;
    timer = setTimeout(function() {
      alert('clicked');
    }, time);
  }

  $('#b1').click(function() {
    clicked = 1;
    clearTimeout(timer);
    updateTimer()
  });

  if (clicked == 1) {
    updateTimer()
  } else {
    time = 10000;
    timer = setTimeout(function() {
      alert('nothingDone');
    }, time);
  }

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="b1">click</div>

关于javascript - if else 条件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45259973/

相关文章:

javascript - Rhino:能够暂停、保存状态和恢复 javascript

javascript - 下载 csv 文件在 Internet Explorer 11 中不起作用,它将页面重定向到另一个页面(无法显示网页)

jquery - 调整声明的所有字体大小?

javascript - 在 JQuery 中从 Angular 调用 ng-attr-id

javascript - 点击下拉菜单多选

javascript - 如何在 JSON 中创建空格

javascript - 单元测试 Typescript 装饰器

javascript - 动态选项卡 - 链接仅在单击时有效

javascript - 检查ID之间有多少个元素

javascript - 在javascript中,为什么下面的代码不退出循环?