RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1542560
Accepted
Bemfes
Bemfes
Asked:2023-09-26 00:46:34 +0000 UTC2023-09-26 00:46:34 +0000 UTC 2023-09-26 00:46:34 +0000 UTC

如何在按下按钮后从头开始计时?

  • 772

我正在尝试重置计时器。

首先有一个方块和一个计时器;计时器到期后,方块消失并出现“重复”按钮。按下后,计时器应该会再次倒计时,但数字不会依次变化,只有起始数字。

同时,计时器本身也开始工作:时间结束后,方块就会消失。

如何让按下按钮后出现计时器数字?

const labelTimer = document.querySelector('span')
const div = document.querySelector('div')
const title = document.querySelector('h1')
const button = document.querySelector('button')

let timer

function start() {
    let time = 5;
    function tick() {

      const seconds = time % 60
      labelTimer.textContent = `${seconds}`;
     
      if (time == 0) {
        clearInterval(timer);
        div.style.opacity = 0
        title.textContent = 'Квадрат исчез!'
        button.style.opacity = 100
      }
      time--;
    }
    tick();
    const timer = setInterval(tick, 1000);
    return timer;
  }

start()

button.addEventListener('click', function() {
    title.innerHTML = `Этот квадрат исчезнет через: <span>5</span> секунд`
    div.style.opacity = 100
    button.style.opacity = 0
    timer = start();
})
javascript
  • 2 2 个回答
  • 36 Views

2 个回答

  • Voted
  1. Best Answer
    SwaD
    2023-09-26T05:30:54Z2023-09-26T05:30:54Z

    如果您坚持使用代码,则只需将 h1 和 span 选择器移到函数内,一切都会按预期工作:

    const div = document.querySelector('div')
    const button = document.querySelector('button')
    let timer
    
    function start() {
      let time = 5;
      const title = document.querySelector('h1');
      title.innerHTML = `Этот квадрат исчезнет через: <span>5</span> секунд`
      const labelTimer = document.querySelector('span');
    
      function tick() {
    
        const seconds = time % 60
        labelTimer.textContent = `${seconds}`;
    
        if (time === 0) {
          clearInterval(timer);
          div.style.opacity = 0
          title.textContent = 'Квадрат исчез!'
          button.style.opacity = 100
        }
        time--;
      }
      tick();
      const timer = setInterval(tick, 1000);
      return timer;
    }
    
    start()
    
    button.addEventListener('click', function() {
      div.style.opacity = 100
      button.style.opacity = 0
      timer = start();
    })
    <h1>Этот квадрат исчезнет через: <span>5</span> секунд</h1>
    <div style="width: 100px; height: 100px; background-color: #20c997"></div>
    <button>Начать</button>

    好吧,或者你可以稍微优化一下。定时器只能通过按钮启动

    const div = document.querySelector('div')
    const button = document.querySelector('button')
    const title = document.querySelector('h1');
    let timer;
    
    function start() {
      let time = 5;
    
      function tick() {
        title.innerHTML = `Этот квадрат исчезнет через: <span>${time % 60}</span> секунд`;
    
        if (time-- === 0) {
          clearInterval(timer);
          div.style.opacity = '0';
          title.innerHTML = 'Квадрат исчез!';
          button.style.opacity = '100';
        }
      }
      tick();
      return setInterval(tick, 1000);
    }
    
    button.addEventListener('click', function() {
      div.style.opacity = '100';
      button.style.opacity = '0';
      timer = start();
    });
    <h1>Квадрата нет!</h1>
    <div style="width: 100px; height: 100px; background-color: #20c997; opacity: 0"></div>
    <button>Начать</button>

    • 1
  2. Darth
    2023-09-26T01:20:56Z2023-09-26T01:20:56Z

    问题是您正在使用innerHtml 条目创建一个新元素。每次执行此操作时,您都需要重新定义 labelTimer(因为现在,单击按钮后,labelTimer 变量包含指向 house 元素的链接,该元素不再位于树中,但在屏幕上已经是新的),或者将文本更改为其他内容,而不涉及每次按下按钮时创建新的范围,或者重写所有文本以及数字并在每个刻度处重新创建范围

    • 0

相关问题

  • 第二个 Instagram 按钮的 CSS 属性

  • 由于模糊,内容不可见

  • 弹出队列。消息显示不正确

  • 是否可以在 for 循环中插入提示?

  • 如何将 JSON 请求中的信息输出到数据表 Vuetify vue.js?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5