2017-09-27 273 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() { 
    controlsEnabled = !controlsEnabled // will toggle false -> true or true -> false; 
}); 

你也可以使用if語句來達到同樣的事情..這樣

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

這是比較囉嗦,但完全有效,你可能會認爲閱讀起來更容易。你也可以使用一個三元運算符這樣

controlsEnabled = (controlsEnabled)? false : true; 

但不會真的給任何好處,既不容易閱讀,或更優雅。但值得了解基於自身條件設置價值的不同方式。你永遠不知道它何時可以派上用場。

+0

非常感謝。你的解決方案很好。 – Masud001

1

這個怎麼樣?

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

謝謝。 (!controlsEnabled)是這個返回false值..? – Masud001

+0

好吧,它在編程中交替出現真與假,'!'符號意味着'not',所以只要它的真,它就變成假,反之亦然。 –

+0

非常感謝你..它的作品..! – Masud001

1

這可能有用

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

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

}); 
+0

謝謝@Deepu。你的解決方案也可以。 – Masud001

0

首先,你的函數不會在瞬間返回任何東西 - 你需要添加return關鍵字。其次,你的代碼不執行布爾開關,它只是分配一個布爾值。作爲true=1false=0,你可以寫:

controlsEnabled^=1; 

它使用XOR操作員從真切換到假,然後再返回。

+0

非常感謝。 – Masud001

1

只是這個代碼替換前4行:

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

謝謝。@尼爾和你倆都是工作.. – Masud001

+0

歡迎。但它應該被標記爲解決方案。 –