---
title: "Flytta lager funktion"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/18193-flytta-lager-funktion"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Erik Juhlin"
published: "2001-09-04T20:06:00.000Z"
updated: "2001-09-05T07:46:00.000Z"
replies: 2
views: 183
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/18193-flytta-lager-funktion"
---

# Flytta lager funktion

## #1 — Erik Juhlin, 2001-09-04T20:06Z

Jag skulle vilja ha en funktion som man skickar med id, left, top och hastighet. Funktionen ska då flytta lagret man angett till punkterna man angett i hastigheten man angett.

Någon som har en sådan funktion eller har lust att hjälpa mig med detta? :)

Permalänk: https://www.webforum.nu/p/18193

## #2 — Jojoxx, 2001-09-05T06:17Z

Eftersom detta script använder generella funktioner går det säkert att optimera koden, men jag gillar generella funktioner :) Here goes;

```
<div id="foo" style="position:absolute;top:200px;left:200px;width:50px;height:50px;background:blue;"></div>
<script language="JavaScript">
function moveLayerAbs(Id,x,y){
	if (document.all){
		if (x) document.all[Id].style.left = x;
		if (y) document.all[Id].style.top = y;
	} else if (document.layers){
		if (x) document.layers[Id].left = x;
		if (y) document.layers[Id].top = y;
	} else if (document.getElementById){
		if (x) document.getElementById(Id).style.left = x+'px';
		if (y) document.getElementById(Id).style.top = y+'px';
	}
}	
function getLayerX(Id){
	if (document.all){
		return parseInt(document.all[Id].style.left);
	} else if (document.layers){
		return parseInt(document.layers[Id].left);
	} else if (document.getElementById){
		return parseInt(document.getElementById(Id).style.left);
	}
}
function getLayerY(Id){
	if (document.all){
		return parseInt(document.all[Id].style.top);
	} else if (document.layers){
		return parseInt(document.layers[Id].top);
	} else if (document.getElementById){
		return parseInt(document.getElementById(Id).style.top);
	}
}
function scrollLayerTo(Id,x,y,speed){
	difx=Math.abs(getLayerX(Id)-x);
	dify=Math.abs(getLayerY(Id)-y);
	if(difx<speed&&dify<speed){
		moveLayerAbs(Id,x,y);
	} else {
		if(dify>difx){
			movy=speed;
			movx=parseInt((difx/dify)*speed);
		} else {
			movx=speed;
			movy=parseInt((dify/difx)*speed);
		}
		if(getLayerX(Id)>x) movx=-movx;
		if(getLayerY(Id)>y) movy=-movy;
		moveLayerAbs(Id,getLayerX(Id)+movx,getLayerY(Id)+movy);
		eval("setTimeout('scrollLayerTo(\""+Id+"\","+x+","+y+","+speed+")',5);");
	}
}
scrollLayerTo('foo',10,150,5);
</script>
```

\---Tillägg---
Kanske bör förklara funktionen. Det intressanta är anropet scrollLayerTo('foo',10,150,5) Den använder samma parameterföljd som du skrev. Id, x-destination, y-destination, hastighet (i.e. maximalt antal pixel att flytta / steg).

Permalänk: https://www.webforum.nu/p/334398

## #3 — Erik Juhlin, 2001-09-05T07:46Z

Tack Jojoxx! :)
Nu har jag lite kod att jobba med. :)

Permalänk: https://www.webforum.nu/p/334399

---

Tråden på webben: https://www.webforum.nu/amne/javascript/18193-flytta-lager-funktion
