2016-11-03 3 views
0

私はjavascriptを初めて使ったので、この質問をしています。 「キー」を押してから9秒の時間間隔で「ハッシュ」キーが押されても警告が「ロックされていない」ようにしたいのですが、期待どおりに機能していません。2回のクリックの差がこのコードでうまくいきませんでした

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>

+0

を私はあなたがたsetInterval –

+1

エラーメッセージがすべてを伝えますを使用する必要があると思います。 'key'ボタンを押したときの時間を定義して、' key'のイベントの範囲外に時間の範囲が拡張されないようにします – Aidin

答えて

0

timehashイベントリスナーがアクセスできるように、グローバル変数でなければなりません。

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>

0

あなたは#keyクリックリスナーのスコープにtimeを初期化します。それは外に出ることはできません。

グローバル変数として外部に設定します。

Variable scope documentation


 
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>

0

時間は現地VARです。あなたはこのようなグローバル変数を作成する必要があり、他の機能でそれにアクセスするための

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"); 
} 

    }); 
関連する問題