在javascript中从倒计时中添加/减去时间

在javascript中从倒计时中添加/减去时间,javascript,jquery,Javascript,Jquery,我想弄明白javascript。。。目前,我正在使用倒计时。我想在按下左键或右键时加/减1分钟 我尝试了以下方法: $(document).keydown(function(e) { switch(e.which) { case 37: // left current = parseInt($('#time2').textContent); newtime = current + 60; countdown_

我想弄明白javascript。。。目前,我正在使用倒计时。我想在按下左键或右键时加/减1分钟

我尝试了以下方法:

  $(document).keydown(function(e) {
    switch(e.which) {
        case 37: // left
          current = parseInt($('#time2').textContent);
          newtime = current + 60;
          countdown_start(newtime)
        break;

        case 39: // right
          alert('right');
        break;

        default: return;
    }
    e.preventDefault(); // prevent the default action (scroll / move caret)
  });
但它有一些非常古怪的反应。。。开始倒数两次…一个拿着纳纳纳纳

任何帮助都将不胜感激。谢谢

.background-countdown
  #start-game
    = submit_tag 'Play', id: "start"
  #time2
    60:00
  .test
    asd
  -##start-time
  -#  =text_field_tag 'start-time-input', "60:00", id: "start-time-input"

  #hint-text.white-text

:javascript

  function startTimer(duration, display) {
    var timer = duration, minutes, seconds;
    var countdown = setInterval(function () {
        minutes = parseInt(timer / 60, 10)
        seconds = parseInt(timer % 60, 10);

        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;

        display.textContent = minutes + ":" + seconds;

        if (--timer < 0) {
          $('#start').show()
          $('#start-time').show()
          clearInterval(countdown)
        }
    }, 1000);
  }
  function countdown_start(sixtyMinutes = 3600) {
    $(document).ready(function () {
      display = document.querySelector('#time2');
      startTimer(sixtyMinutes, display);
    });
  }

  $('#start').click(function() {
    countdown_start()
    $('#start').hide()
    event.preventDefault();
  });

  function get_text(){
    var feedback = $.ajax({
      type: "POST",
      url: "/jquery/update_text",
      async: false
    }).complete(function(){
      setTimeout(function(){get_text();}, 1000);
    }).responseText;
  }

  $(function(){
    get_text();
  });
。背景倒计时
#开始比赛
=提交标签“播放”,id:“开始”
#时间2
60:00
.测试
自闭症
-##开始时间
-#=文本\字段\标记“开始时间输入”,“60:00”,id:“开始时间输入”
#提示文本。白色文本
:javascript
功能启动计时器(持续时间、显示){
var定时器=持续时间,分钟,秒;
var倒计时=设置间隔(函数(){
分钟=parseInt(计时器/60,10)
秒=parseInt(计时器%60,10);
分钟=分钟<10?“0”+分钟:分钟;
秒=秒<10?“0”+秒:秒;
display.textContent=分钟+“:”+秒;
如果(--定时器<0){
$('#start').show()
$(“#开始时间”).show()
清除间隔(倒计时)
}
}, 1000);
}
功能倒计时\启动(六分钟=3600){
$(文档).ready(函数(){
display=document.querySelector(“#time2”);
startTimer(六分钟,显示);
});
}
$(“#开始”)。单击(函数(){
倒计时开始()
$('#start').hide()
event.preventDefault();
});
函数get_text(){
var feedback=$.ajax({
类型:“POST”,
url:“/jquery/update\u text”,
异步:false
}).complete(函数(){
setTimeout(函数(){get_text();},1000);
}).responseText;
}
$(函数(){
获取文本();
});

这里的问题可能是,您使用的clearInterval是正确的,但是您没有正确保存setIntervall方法返回的ID值

请查看w3schools.com页面:

他们在定义下的注释中写道:

注意:要使用clearInterval()方法,必须在创建interval方法时使用全局变量

你把身份证保存在本地,所以也许你不应该这样做。
而是使用一个全局变量,这意味着您在functions部分之外声明它,并反复使用该引用,但您还需要更改的是您的顺序。首先设置一个间隔,然后在startMethod函数中清除该间隔。我认为如果您更改顺序并使变量为全局变量,它应该可以工作。

这里的问题可能是,您使用的是clearInterval right,但您没有正确保存SetInterval方法返回的ID值

请查看w3schools.com页面:

他们在定义下的注释中写道:

注意:要使用clearInterval()方法,必须在创建interval方法时使用全局变量

你把身份证保存在本地,所以也许你不应该这样做。
而是使用一个全局变量,这意味着您在functions部分之外声明它,并反复使用该引用,但您还需要更改的是您的顺序。首先设置一个间隔,然后在startMethod函数中清除该间隔。我认为,如果您更改顺序并将变量设置为全局变量,它应该可以工作。

在添加时间时,您没有清除间隔,而是每次都创建一个新的间隔。你的右钥匙不起作用。。。不确定get_text函数是关于什么的get_text是另外一个函数…不想包含它。如何清除间隔?HTML使用哪个预处理器?在添加时间时,您不是清除间隔,而是每次都创建一个新的间隔。你的右钥匙不起作用。。。不确定get_text函数是关于什么的get_text是另外一个函数…不想包含它。如何清除间隔?HTML使用哪个预处理器?