2017-09-27 8 views
2

ボタンをクリックすると、関数が返されます。falseと​​関数が無効になります。クリックするとfalseに戻ります。もう一度クリックするとtrueが返されます

この同じボタンをもう一度クリックすると、trueが返され、​​機能が有効になります。

私はこのようにしましたが、falseと​​機能が無効になっています。このボタンをクリックして​​機能を有効にする必要があります。

どうすればいいですか?これについて

var controlsEnabled = true; 
 
$(".keyboard-btn").on('click', function() { 
 
    controlsEnabled = false; 
 
}); 
 

 
$(document).keydown(function(e) { 
 
    if (controlsEnabled) { 
 
    if (e.keyCode == 38) { 
 
     verticalSlideDown(); 
 
     console.log("pressed key for Down : " + e.keyCode); 
 
    } 
 

 
    if (e.keyCode == 40) { 
 
     verticalSlideUp(); 
 
     console.log("pressed key for Up: " + e.keyCode); 
 
    } 
 

 
    if (e.keyCode === 13) { 
 
     var div = $(".scroll-inner-container"); 
 
     console.log("pressed key for stop : " + e.keyCode); 
 
     div.stop(); 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="keyboard-btn">click here</button>

答えて

2

クリックするだけでcontrolEnabledをfalseに設定することもできます。トグルする方法が必要です。これは

$(".keyboard-btn").on('click', function() 
{ 
     if(controlsEnabled) 
     { 
      controlsEnabled = false; 
     } 
     else 
     { 
      controlsEnabled = true; 
     } 
}); 

これは、より長ったらしいが、完全に有効であるように

最速のオプションは...文は同じことを達成する場合にも使用することができ、この

$(".keyboard-btn").on('click', function() { 
    controlsEnabled = !controlsEnabled // will toggle false -> true or true -> false; 
}); 

を書くことですあなたはそれを読むのが簡単だと主張することができます。このような三項演算子を使用することもできます

controlsEnabled = (controlsEnabled)? false : true; 

しかし、それは実際にはそれほど有利ではなく、読みやすく、よりエレガントではありません。しかし、それ自体に基づいて条件付きで値を設定するさまざまな方法を知ることは価値があります。あなたはそれがいつ便利になるかわからない。

+0

ありがとうございました。あなたの解決策はうまくいきます。 – Masud001

1

どのように?

$(".keyboard-btn").on('click', function() { 
    controlsEnabled = !controlsEnabled; 
}); 
+0

はありがとうを。 (!controlsEnabled)これはfalseを返します.. ..? – Masud001

+0

これはtrueとfalseを交互にしています。プログラミングでは、 '! '記号は' not'を意味します。したがって、trueの場合はfalse、falseの場合はfalseになります。 –

+0

ありがとうございます。 – Masud001

1

これは便利

$(".keyboard-btn").on('click', function() { 

     controlsEnabled= controlsEnabled? false :true ; // controlsEnabled = !controlsEnabled 

}); 
+0

@Deepuありがとうございます。あなたのソリューションも機能します。 – Masud001

0

まず、あなたの関数は、現時点では何も返さないこと - あなたはreturnキーワードを追加する必要があります。

第2に、コードがブール値スイッチを実行していないため、単にブール値を割り当てるだけです。 true=1false=0として、あなたは書くことができます。

再びtrueからfalseに切り替えるとするXOR演算子を使用しています
controlsEnabled^=1; 

を。

+0

ありがとうございます。 – Masud001

1

ただ、このコードの最初の4行に置き換えます。

var controlsEnabled = true; 
$(".keyboard-btn").on('click', function() { 
    controlsEnabled = !controlsEnabled; 
}); 
+0

ありがとうございます。@ Nirとあなたはどちらも仕事です.. – Masud001

+0

ようこそ。しかし、解決策としてマークする必要があります。 –