两次点击之间的差异并没有很好地处理这段代码

Difference between two clicks didn't get well on this code

本文关键字:很好 处理 段代码 代码 并没有 两次 之间      更新时间:2023-09-26

我是javascript的新手,这就是为什么我问这个问题。我只是希望警报"解锁",如果"哈希"键按下9秒后的时间间隔,但它不像预期的那样工作,有人能帮助我吗?

document.getElementById("key").addEventListener("click",function(){
alert("enter # to unlock");  
var time = (new Date()).getTime();
  //alert(time);
});
document.getElementById("hash").addEventListener("click",function(){
  var keytime = (new Date()).getTime();
    //alert(keytime);
   var diff = time - keytime;
  alert(diff);
  if(diff <= 9000){
    alert("unlocked");  
  }
  else{
   alert("try again");  
  }
  
  });
<button id="key">key </button>
<button id="hash">#</button>

time应该是一个全局变量,这样hash的事件侦听器才能访问它。

var time = Infinity;
document.getElementById("key").addEventListener("click",function(){
alert("enter # to unlock");  
time = (new Date()).getTime();
  //alert(time);
});
document.getElementById("hash").addEventListener("click",function(){
  var keytime = (new Date()).getTime();
    //alert(keytime);
   var diff = time - keytime;
  alert(diff);
  if(diff <= 9000){
    time = Infinity;
    alert("unlocked");  
  }
  else{
   alert("try again");  
  }
  
  });
<button id="key">key </button>
<button id="hash">#</button>

您在#key点击侦听器的范围内初始化了time。外面够不着。

将其设置为全局变量。

变量作用域文档

 
var time = 0;
document.getElementById("key").addEventListener("click",function(){
  alert("enter # to unlock");  
  time = (new Date()).getTime();
  //alert(time);
});
document.getElementById("hash").addEventListener("click",function(){
  var keytime = (new Date()).getTime();
    //alert(keytime);
   var diff = time - keytime;
  alert(diff);
  if(diff <= 9000){
    alert("unlocked");  
  }
  else{
   alert("try again");  
  }
  
  });
<button id="key">key </button>
<button id="hash">#</button>

时间是本地变量。

要在其他函数中访问它,你应该创建一个全局变量,像这样:
var time;
document.getElementById("key").addEventListener("click",function(){
alert("enter # to unlock");  
time = (new Date()).getTime();
  //alert(time);
});
document.getElementById("hash").addEventListener("click",function(){
  var keytime = (new Date()).getTime();
    //alert(keytime);
   var diff = time - keytime;
  alert(diff);
  if(diff <= 9000){
    alert("unlocked");  
  }
  else{
  alert("try again");  
 }
  });