deinernstjetzt
Goto Top

Mit Javascript html Element bewegen

Hallo,
ich habe einen Javascript geschrieben der ein HTML Element bewegt.
Er verändert den Abstand zu anderen Elementen mit CSS, so bewegt dich in diesem falle ein Punkt.
Das problem ist das der Script nur einmal kurz und nach dem drücken der Pfeiltaste nicht mehr läuft. Das
heißt, ich kaann den Punkt nicht unendlich lang bewegen. Der Code sieht so aus:
document.addEventListener('keydown', function(event) {
var code = event.keyCode;
if (code == 37) {
document.getElementById('p1').style.marginRight ='20px';
}
if (code == 38) {
document.getElementById('p1').style.marginBottom ='20px';
}
if (code == 39) {
document.getElementById('p1').style.marginLeft ='20px';
}
if (code == 40) {
document.getElementById('p1').style.marginTop ='20px';
}
});

Content-Key: 272839

Url: https://administrator.de/contentid/272839

Printed on: April 19, 2024 at 04:04 o'clock

Mitglied: 114757
Solution 114757 May 24, 2015, updated at May 25, 2015 at 11:28:27 (UTC)
Goto Top
Moin,
sollte eigentlich klar sein wenn man mal sein Hirn einschaltet, denn du setzt den Margin immer nur auf den selben Wert, nämlich 20px also geht das nur einmal, du musst also immer jeweils weitere 20px hinzu addieren face-wink

Gruß jodel32
Member: colinardo
colinardo May 24, 2015 updated at 09:35:22 (UTC)
Goto Top
Moin zusammen,
Beispiel: http://jsfiddle.net/sq7wxbby/3/
<!doctype html>
<html>
<head>
<meta charset="utf-8">  
<title>Demo</title>
</head>
<script type="text/javascript">  
document.addEventListener('keydown', function(event) {  
	var el = document.getElementById('point');  
	var increment = 20;
	switch(event.keyCode){
		case 37: //left
			var pos = ((el.offsetLeft-increment) > 0 ) ? el.offsetLeft - increment : 0;
			el.style.left = pos + "px";		  
			break;
		case 38: //up
			var pos = ((el.offsetTop - increment) > 0 ) ? el.offsetTop - increment : 0;
			el.style.top = pos + "px";		  
			break;
		case 39: //right
			var pos = ((el.offsetLeft + increment) < window.innerWidth - el.width ) ? el.offsetLeft + increment : window.innerWidth - el.width;
			el.style.left = pos + "px";  
			break;
		case 40: //down
			var pos = ((el.offsetTop + increment) < window.innerHeight - el.height ) ? el.offsetTop + increment : window.innerHeight - el.height;
			el.style.top = pos + "px";  
			break;
	}
});
</script>
<style type="text/css">  
    body{margin:0}
    #point{position:absolute}
</style>
<body>
    <img id="point" src="http://forum.linux-club.de/images/avatars/gallery/smilies/fi_av_smiles_y_57.gif" />  
</body>
</html>
Grüße Uwe