2014-02-25 52 views
0

因此,我的腳本有一個循環功能,用於在按下特定鍵(a鍵)時打印出一個字符串,如果沒有,則它會打印出來一個不同的字符串,這樣,當按住鍵時,它會連續打印第一個字符串。我嘗試了大約30種不同的方式來註冊,但沒有任何效果。該功能開始從另一個函數,而不是當我按下一個div的按鈕,所以我不想聽到任何的onkeydown運行這個功能,我需要不斷磨合,並按下該鍵時檢查運行檢查循環功能上的特定鍵是否被按下

function legs(interval, key, text) { 

    if (foot == true) { 
     text.innerHTML = 'Left Foot<br/><br/>' + text.innerHTML; 
    } else { 
     text.innerHTML = 'Trip!<br/><br/>' + text.innerHTML; 
    } 

    setTimeout(function(){legs(interval, key, text)},interval); 
} 

傳遞給它的時間間隔是500,關鍵字是'a',文本是打印字符串的div。任何人都可以幫助我嗎?

回答

1

使用布爾變量keyPressed。在文檔上使用keydown事件來觀察a密鑰。如果按下,則更改變量keyPressed = true。然後在關鍵幀上設置keyPressed = false

使用jQuery:

var keyPressed = false; 

$(document).keydown(function(e){ 
     var keycode = e.keyCode || e.which; 

     //if a key is held down 
     if(keycode == 65){ 
      keyPressed = true; 
     } 


    }); 

$(document).keyup(function(e){ 
     var keycode = e.keyCode || e.which; 

     if(keycode == 65){ 
      keyPressed = false; 
     } 
    }); 

使用純醇」的JavaScript:

document.onkeydown = function(e){ 
     var keycode = e.keyCode || e.which; 

     //if a key is held down 
     if(keycode == 65){ 
      keyPressed = true; 
     } 


    } 

document.onkeyup = function(e){ 
     var keycode = e.keyCode || e.which; 

     if(keycode == 65){ 
      keyPressed = false; 
     } 
    } 
+0

請注意,您的解決方案依賴於jQuery的,這是不壞,但你或許應該提到它。 –

+0

@SimonGroenewolt,好點。我也添加了非jQuery版本。 – brouxhaha

+0

這拒絕工作。我已經將確切的代碼複製到我的腳本中,只是將'keyPressed'變量更改爲'foot',但它拒絕執行任何操作,以及打印行的主要函數現在也不會打印,所以我正在考慮此功能打破它在某種形式 編輯:我不得不改變document.onkeyup(function to document.body.onkeyup =功能。現在的作品,謝謝 –

1

您可以添加一個isAKeyDown標誌,就像這樣:

var isAKeyDown; 

然後,你檢查按下的鍵添加onkeydown事件處理程序中的一個關鍵,如果是這樣設置isAKeyDown爲true。在onkeyup處理程序中將其設置爲false。

相關問題