2017-01-16 10 views
0

У меня вопрос. Я сделал небольшой сайт в HTML и vanilla JS, чтобы действовать как счетчик. Он работает нормально, но я хотел добавить функцию, которая позволила бы пользователю добавлять или вычитать 1 из счетчика, нажимая «+» или «-», на цифровой клавиатуре или нет.Добавление событий нажатия

Что является самым простым способом сделать это в ванильном JS?

+0

Возможный дубликат [Простейшим способом обнаружения нажатий клавиш в JavaScript] (http://stackoverflow.com/questions/16089421/simplest-way-to-detect-keypresses-in-javascript) – Dekel

+0

@Dekel У этого сообщения был jQuery, этого нет. –

+0

@LeoWilson принятый ответ там не имеет jquery. – Dekel

ответ

0

Вы хотите добавить event listener на документ

document.addEventListener('keydown', myFunction); 

function myFunction(e) { 
    var keyCode = e.keyCode(); 
    ... 
} 

Вы хотите посмотреть на коды клавиш для ключей вы будете использовать (+ и -) и сравнить это значение keyCode. Затем используйте условное выражение для выполнения добавления или вычитания.

0

Вы бы создать обработчик событий, который будет добавлять или вычитать из глобальной переменной на основе нажатой клавиши, как это:

window.counter=0; 
 

 
function key(ev){ 
 
    if(ev.keycode==107) window.counter++; 
 
    if(ev.keycode==109) window.counter--; 
 
} 
 

 
document.onkeypress = key;

1

Конечно, просто прикрепить к KeyUp событий и приращение или уменьшение значения при нажатии соответствующей клавиши.

var value = 0; 
 

 

 
document.addEventListener("DOMContentLoaded", function(event) { 
 
    document.querySelector(".valueHolder").innerHTML = value; 
 
    
 
}); 
 

 
document.addEventListener("keyup", function(event) { 
 
    
 
    if (event.which == "187" || event.which == "107") { // + key 
 
    value++; 
 
    } 
 

 
    if (event.which == "189" || event.which == "109") { // - key 
 
    value--; 
 
    } 
 

 
    
 
    document.querySelector(".valueHolder").innerHTML = value; 
 
    
 
    
 
console.log(event.which); 
 
});
<div class="valueHolder"></div>