2011-05-14 52 views
0

JavaScript的優點嗎?我有一個div,在輸入konami代碼後我已經淡入,還有一個按鈕,您可以點擊淡出div,但我必須刷新才能重新輸入konami代碼。我希望能夠在不刷新頁面的情況下持續輸入konami代碼。理想情況下,我想刪除按鈕,但我似乎無法使用if語句來運行。Javascript Konami Code,FadeIn/FadeOut Div

這是我到目前爲止有:

<script 
    src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" 
    type="text/javascript"></script> 

<script type= "text/javascript"> 
var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65,13"; 
$(document).keydown(function(e) { 
    kkeys.push(e.keyCode); 
    if (kkeys.toString().indexOf(konami) >= 0) 
    { 
    $(document).unbind('keydown',arguments.callee); 
    $(document).ready(function() 
    { 
     $(".konami").fadeIn(1000); 
    }); 
    } 
}); 

</script> 
<script type="text/javascript"> 

$(document).ready(function(){ 

    $(".btn1").click(function(){ 

    $(".konami2").fadeOut(1000); 

    }); 
}); 
</script> 

<div class ="konami" style="display: none"> 
<p class ="konami2"> 

Hello! Type "bye" to remove! 

</p> 
<button class="btn1">Fade out</button> 
</div> 

回答

2

如果空當用戶在鍵輸入你的按鍵歷史數組,應該讓這個進程重複。所以,與其

$(document).unbind('keydown',arguments.callee); 

您可以簡單地這樣做

kkeys = []; 

當然,你應該決定什麼時候會發生什麼在代碼的用戶類型的第二次。這是一個版本,切換你的div的可見性。請注意,我升級了您的jquery版本以支持fadeToggle函數。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script> 
<script> 
var kkeys = []; 
var konami = "38,38,40,40,37,39,37,39,66,65,13"; 
$(document).keydown(function(e) { 
    kkeys.push(e.keyCode); 
    if (kkeys.toString().indexOf(konami) >= 0) 
    { 
     kkeys = []; 
     $(".konami").fadeToggle(1000); 
    } 
}); 
</script> 

<div class="konami" style="display: none"> 
    <p class="konami2"> 
     Hello! Type the code again to remove! 
    </p> 
</div> 
+0

這一個效果很好。我甚至沒有意識到我正在使用舊的JQuery。謝謝一堆。我真的只是計劃顯示一個小的.gif動畫,但我希望能夠在顯示後隱藏它。 fadeToggle絕對看起來比fadeIn和fadeOut更好。 – Rich 2011-05-14 07:58:52

+0

非常感謝...這是我在網上找到的最好/最簡單的實現。 – 2012-11-24 05:59:49

1

我給它一個嘗試,我希望這是有益的:

$(document).ready(function(){ 
    //why do you need to press enter btw? "13" keyCode 
    var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65,13"; 
    var bkeys = []; var bye = "66,89,69"; 
    $(this).keydown(function(e) { 
      // if konami 
      kkeys.push(e.keyCode); 
      if (kkeys.toString().indexOf(konami) >= 0) 
      { 
       $(".konami").fadeIn(1000); 
       kkeys = []; 
      } 

      // "bye" 
      bkeys.push(e.keyCode); 
      if (bkeys.toString().indexOf(bye) >= 0) 
      {      
       $(".konami").fadeOut(1000); 
       bkeys = []; 
      } 
    }); 

    // manual fade out using button click 
    // no need to type to hide stuff 
    $(".btn1").click(function(){ 
     $(".konami").fadeOut(1000); 
    }); 
}); 
+0

就「13」鍵碼而言,我覺得Konami Code應該包含enter作爲「開始」按鈕。這個工作也很好,但是沒有這個按鈕讓事情看起來更整齊一些。 非常感謝您的建議。 – Rich 2011-05-14 07:59:11