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-ID: 272839

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

Ausgedruckt am: 26.11.2024 um 02:11 Uhr

114757
Lösung 114757 24.05.2015, aktualisiert am 25.05.2015 um 13:28:27 Uhr
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
colinardo
colinardo 24.05.2015 aktualisiert um 11:35:22 Uhr
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