我无法在javascript中重复一个功能

Matteo Linux

我正在尝试编写一个简单的Tabata计时器。到目前为止,它仍然有效,但是当我尝试根据存储在变量中的值尝试多次重复计数时,问题就来了。因此,假设我们从10开始到0,并且想要重复两次此计数。会说:当我按下按钮时,在计数开始之前,程序将检查具有次数的变量是否为NaN或其中是否包含数字。如果是NaN(因为我不想重复),它将开始从10倒数到0,然后停止。好的,这部分有效。但是,如果我说我想重复倒数两次呢?我在变量“ var times”中输入了要重复的次数,比方说2,然后使用如下的for循环:

  for(var i=0; i<times; i++){}

但是,当我开始倒数计时时,与其重复两次,而是跳过许多数字作为时间变量值。这是为什么?

提前致谢

这是我的代码。

var times = 2;
var counter = 0;
var operation;

document.getElementById("timer").textContent = 10;

function calculate(){

    counter = document.getElementById("timer").textContent
    operation = setInterval(function(){
        if(counter >= 1 && counter <= 10){
            counter -- ;
            document.getElementById("timer").textContent = counter;

        }
        else if(counter == 0){
            clearInterval(operation);
            document.getElementById("timer").textContent = 10;
            
            
        }

    },1000);

}

document.getElementById("btn").addEventListener("click", function(){

    for(var i=0; i<times; i++){

        calculate();
    }
   
})
.btn{
    position: absolute;
    width: 100%;
    top: 20%;
    margin:auto;
    text-align: center;
    
}

.timer{
    position: absolute;
    width: 100%;
    top:30%;
    margin:auto;
    text-align: center;
    font-size: 10rem;
}
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="style.css">
    <title>Document</title>

</head>

<body>

    <div class="container">

        <div class="btn">

            <button id="btn">

                <h1>Click me</h1>

            </button>

        </div>

        <div class="timer">

            <p id="timer"></p>

        </div>

    </div>

    <script src="main.js"></script>
    
</body>

</html>

卡洛斯1232

我弄清楚了,问题在于,当您执行for循环时,它会调用两次setinterval,因此对于这种情况,您必须使用递归,这是此情况下的工作代码->

var times = 2;
var counter = 0;
var operation;

document.getElementById("timer").textContent = 10;

function calculate(){
    counter = document.getElementById("timer").textContent
    operation = setInterval(function(){
        if(counter >= 1 && counter <= 10){
            counter -- ;
            document.getElementById("timer").textContent =   counter;
        }
        else if(counter == 0){
          times--
          console.log(times)
          if(times > 0){
            document.getElementById("timer").textContent = 10;
            clearInterval(operation);
            calculate()
          }else if(times == 0){
            clearInterval(operation);
            document.getElementById("timer").textContent = 10;
          }                
        }
       

    },1000);

}
.btn{
  z-index: 9999;
    position: absolute;
    width: 100%;
    top: 20%;
    margin:auto;
    text-align: center;
    
}

.timer{
    position: absolute;
    width: 100%;
    top:30%;
    margin:auto;
    text-align: center;
    font-size: 10rem;
}
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="style.css">
    <title>Document</title>

</head>

<body>

    <div class="container">

        <div class="btn">

            <button onClick="calculate()" id="btn">

                <h1>Click me</h1>

            </button>

        </div>

        <div class="timer">

            <p id="timer"></p>

        </div>

    </div>

    
</body>

</html>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在元组中重复一个元组

来自分类Dev

我做了一个“公共无效”功能,现在如何在另一个活动中调用它?

来自分类Dev

为什么我在javascript中覆盖第一个函数时无法正常工作

来自分类Dev

在javascript中返回字符串中的第一个非重复字符

来自分类Dev

从JavaScript中的其他功能执行另一个功能

来自分类Dev

是否可以创建一个功能而不是两个目的相同但参数类型不同的功能?(我可以删除重复的代码吗?)

来自分类Dev

如何在javascript中重复一个函数?

来自分类Dev

我可以在另一个任务中使用一个PowerShell任务中的功能吗?

来自分类Dev

我使用的每一个毛刺功能都无法解析的外部符号

来自分类Dev

Javascript运行功能在另一个设置为间隔的功能中运行

来自分类Dev

如何定期重复一个功能,直到在Django中成功在后台执行?

来自分类Dev

我只需要使用另一个列表中的重复项创建一个列表

来自分类Dev

我的功能有一个我似乎无法解决的问题。目前,它说无法读取连接插槽中未定义的属性“ split”

来自分类Dev

我如何在一个“ IF” javascript中编写许多“ OR”

来自分类Dev

如何在javascript的另一个功能文件的功能中调用功能文件功能?

来自分类Dev

我无法从plist键值中解包一个值

来自分类Dev

我的一个子类中的一个功能不起作用,即使另一个子类中的功能相同

来自分类Dev

我需要检查一个JavaScript数组,看看是否有重复的值。

来自分类Dev

在另一个函数中的功能javascript

来自分类Dev

无法在另一个函数javascript中调用一个函数

来自分类Dev

在执行另一个功能的同时重复启动一个功能

来自分类Dev

我试图在一个let中嵌套一个if语句,但是我无法让let接受else语句

来自分类Dev

我可以在Ocaml的另一个“ rec”功能中定义一个“ rec”功能吗?

来自分类Dev

如何仅在JavaScript中完全完成另一个功能后才能启动一个功能?

来自分类Dev

我如何找到一个单词在重复流中重复出现的次数?

来自分类Dev

我如何创建一个购物车(字典功能)来添加和删除 javascript 中的项目

来自分类Dev

reactJS 中的新功能,我试图通过单击按钮在数组中添加一个项目。但无法获取更改的数组

来自分类Dev

我想打印一个元素在 C 中的随机数数组中重复的次数

来自分类Dev

我如何在c#中重复一个动作来修复跳跃机制

Related 相关文章

  1. 1

    在元组中重复一个元组

  2. 2

    我做了一个“公共无效”功能,现在如何在另一个活动中调用它?

  3. 3

    为什么我在javascript中覆盖第一个函数时无法正常工作

  4. 4

    在javascript中返回字符串中的第一个非重复字符

  5. 5

    从JavaScript中的其他功能执行另一个功能

  6. 6

    是否可以创建一个功能而不是两个目的相同但参数类型不同的功能?(我可以删除重复的代码吗?)

  7. 7

    如何在javascript中重复一个函数?

  8. 8

    我可以在另一个任务中使用一个PowerShell任务中的功能吗?

  9. 9

    我使用的每一个毛刺功能都无法解析的外部符号

  10. 10

    Javascript运行功能在另一个设置为间隔的功能中运行

  11. 11

    如何定期重复一个功能,直到在Django中成功在后台执行?

  12. 12

    我只需要使用另一个列表中的重复项创建一个列表

  13. 13

    我的功能有一个我似乎无法解决的问题。目前,它说无法读取连接插槽中未定义的属性“ split”

  14. 14

    我如何在一个“ IF” javascript中编写许多“ OR”

  15. 15

    如何在javascript的另一个功能文件的功能中调用功能文件功能?

  16. 16

    我无法从plist键值中解包一个值

  17. 17

    我的一个子类中的一个功能不起作用,即使另一个子类中的功能相同

  18. 18

    我需要检查一个JavaScript数组,看看是否有重复的值。

  19. 19

    在另一个函数中的功能javascript

  20. 20

    无法在另一个函数javascript中调用一个函数

  21. 21

    在执行另一个功能的同时重复启动一个功能

  22. 22

    我试图在一个let中嵌套一个if语句,但是我无法让let接受else语句

  23. 23

    我可以在Ocaml的另一个“ rec”功能中定义一个“ rec”功能吗?

  24. 24

    如何仅在JavaScript中完全完成另一个功能后才能启动一个功能?

  25. 25

    我如何找到一个单词在重复流中重复出现的次数?

  26. 26

    我如何创建一个购物车(字典功能)来添加和删除 javascript 中的项目

  27. 27

    reactJS 中的新功能,我试图通过单击按钮在数组中添加一个项目。但无法获取更改的数组

  28. 28

    我想打印一个元素在 C 中的随机数数组中重复的次数

  29. 29

    我如何在c#中重复一个动作来修复跳跃机制

热门标签

归档