Ingernirated
@Ingernirated
Романыч

Как сделать выполнение двух событий одновременно при зажатии?

Есть три функции, 2 из которых забиты на keydown, которые добавляют ширину и высоту, но они одновременно не могут работать, так же после нажатия другой кнопки, не отпуская первую, первая функция останавливается
Как реализовать, одновременное срабатывание двух кнопок и двух функций не зависимо от того, в какой очередности всё происходит.
Например
function size(e) {
if(e.keyCode == 20) {
      doc.elem.width++;
}
if(e.keyCode == 21) {
      doc.elem.height++;
}
// А как сделать третью, где 
doc.elem.width++;
doc.elem.height+;
// сработают одновременно, вариант с 
if(e.keyCode == 20 && e.keyCode ==21) {
....
}
// не работает и так же в нем 2-ая кнопка перебивает первую и выполняется уже другая, остановив первую
}
document.body.addEventListener("keydown", size);
  • Вопрос задан
  • 538 просмотров
Решения вопроса 1
@dimentimor
var events = {};
var w = 0, h = 0;

// когда кнопка зажата
document.addEventListener('keydown', function (e) {
	events[e.keyCode] = true; // добавляем код кнопки в объект
	action(); // вызываем функцию "действия"
});

document.addEventListener('keyup', function (e) {
	// удаляем код кнопки из объекта только когда клавиша отпущена
	events[e.keyCode] = false; 
	console.log(w, h);
});

// а тут теперь можно писать инструкции для любых комбинаций
function action () {
	if (events[38]) w++;
	if (events[39]) h++;
	if (events[38] && events[39]) console.log('обе кнопки');
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы