2016-02-02 10 views
0

У меня есть код, который увеличивает переменную «деньги», когда я нажимаю клавишу «S», и я хотел бы изменить значение, когда нажимаю кнопку, но она не работает.Изменить значение при нажатии кнопки

Спасибо.

Увеличивает "деньги":

document.addEventListener('keydown', function(event) { 
console.log("Event"); 
if(event.keyCode == 83) { 
console.log("Key Pressed"); 
document.getElementById("key").innerHTML = "<img src=\"stick2.gif\">"; 
shoot -= 1; 
document.getElementById("shoot").innerHTML = shoot; 
if(shoot > 0){ 
money += 4; 
document.getElementById("money").innerHTML = money; 
document.getElementById("cash").innerHTML = "<img src=\"money.png\">"; 
    } 
    } 
} 

изменяет значение:

function onClick12() { 
    document.getElementById("ak").innerHTML = "<img src=\"ak/ak1.png\">"; 
    document.getElementById('b1').disable = true; 
    if(event.keyCode == 83 && shoot > 0) { 
    money += 8; 
    document.getElementById("money").innerHTML = money; 
    document.getElementById("cash").innerHTML = "<img src=\"money.png\">"; 
     } 
    } 
    function onClick13() { 
    document.getElementById("ak").innerHTML = "<img src=\"ak/ak4.png\">"; 
    document.getElementById('b4').disable = true; 
    if(event.keyCode == 83 && shoot > 0) { 
    money += 12; 
    document.getElementById("money").innerHTML = money; 
    document.getElementById("cash").innerHTML = "<img src=\"money.png\">"; 
     } 
     } 

Кнопки:

<input type="button" onclick="onClick12()" id="b1" value="Use"> 
<input type="button" onclick="onClick13()" id="b4" value="Use"> 
+0

Вы хотите изменить денежную переменную? Можете ли вы попробовать заменить имена функций: Функция onClick13 (event) {...} Функция onClick12 (event) {...} – Rigin

+0

Хорошо, я попробую! –

+0

Я думаю, что я ошибся - вы нажимаете кнопку справа, ПОЧЕМУ вам нужна кнопка event.keyCode в этой кнопке? Вы могли бы удалить эту проверку прямо? – Rigin

ответ

1
if(event.keyCode == 83 && shoot > 0) 

Переменная событие не определено в объеме вы работаете onClick12/13 Обратите внимание, что если вы все еще получаете данные о событиях из события onclick, у вас не будет кода ключа, так как событие click не содержит информацию о keybaord.

Но вы действительно хотите, чтобы ваш пользователь нажимал клавишу и нажимал на то, что вам нужно? Если это так, я предлагаю вам уловить событие keydown для регистрации в переменной, нажатой в данный момент, и событием keyup для сброса этого значения.

Эта переменная должна быть определена вне функции, чтобы другая функция могла получить к ней доступ. Вот основные сведения

var key83Pressed = false; 
document.addEventListener('keydown', function(event) { 
    key83Pressed = event.keyCode == 83; 


} 
function onCLick12(){ 
    if(key83Pressed){ 

    } 
} 
document.addEventListener('keyup', function(event){ 

    if(event.keyCode==83){ 
      key83Pressed = false; 
    } 

}); 
+0

Если я сделаю другое событие keydown внутри функции onClick, он будет работать –

+0

Нет, это не так, как это работает. это означает, что каждый раз, когда вы нажимаете, вы свяжете нового слушателя, прослушивающего ключевые события. Это означает, что это не сработает, пока вы нажмете хотя бы один раз на кнопку, и у вас будет утечка памяти. – Walfrat

Смежные вопросы