Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   onkeydown Event (https://javascript.ru/forum/events/51819-onkeydown-event.html)

SpiriKoN 20.11.2014 20:39

onkeydown Event
 
Хочу чтобы блок двигался
#showKey
		{
		left: 50px;
			top: 50px;
			height: 40px;
			width: 50px;
			background-color: red;
			position: relative;
			display: block;
		}


<div id="blocks" onkeypress="left(e)"></div>

function(e) {
  e = e || event;
function(e) {
var block =  document.getElementById("blocks")
  switch(e.keyCode) {
  case 37: // влево
    block.style.left += 20+'px' ;
    return false;
  case 38: // вверх
    block.style.top -= 20+'px' ;
    return false;
  case 39: // вправо
    block.style.left -= 20+'px' ;
    return false;
  case 40: // вниз
    block.style.top += 20+'px' ;
    return false;
  }
};
}

но у меня не выходит что не так?
Как правильно написать?

рони 20.11.2014 20:44

SpiriKoN,
клик на документ -- создать переменные направлений и к ним прибавлять дельту
block.style.left -= 20
var left = 0;
...
case 39: left -= 20;
block.style.left = left+'px' ;

рони 20.11.2014 20:51

SpiriKoN,
http://javascript.ru/forum/misc/4361...tml#post287737

SpiriKoN 21.11.2014 19:07

document.body.onkeydown = function (e) {
var left = 0;
var top = 0;
var block = document.getElementById("blocks");
e = e || event;

switch(e.keyCode) {
case 37: // влево
left -= 20;
block.style.left = left+'px' ;
return false;
case 38: // вверх
top -= 20;
block.style.top = top+'px' ;
return false;
case 39: // вправо
left += 20;
block.style.left = left+'px' ;
return false;
case 40: // вниз
top =top+ 20;
block.style.top = top+'px' ;
return false;
}
}
написал но все равно не то. Как правильно?

SpiriKoN 21.11.2014 19:11

var left = 0;
var block = document.getElementById("blocks");
document.body.onkeydown = function (e) {
e = e || event;
switch(e.keyCode) {
case 37: // влево
left -= 20;
block.style.left = left+'px' ;
return false;
case 39: // вправо
left += 20;
block.style.left = left+'px' ;
return false;
но так то что мне нужно
Спасибо!

рони 22.11.2014 11:47

Цитата:

Сообщение от SpiriKoN
var left = 0;
var top = 0;

это должно быть вне функции

и форматируйте свой код - зачем глаза ломать


Часовой пояс GMT +3, время: 18:47.