---
title: "Flytta lager efter pekare"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/17392-flytta-lager-efter-pekare"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Riri"
published: "2001-02-06T11:42:00.000Z"
updated: "2004-02-27T12:52:32.000Z"
replies: 13
views: 481
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/17392-flytta-lager-efter-pekare"
---

# Flytta lager efter pekare

## #1 — Riri, 2001-02-06T11:42Z

Nu har jag följande funktion som visar aktuellt lager och flyttar det till en fast position:

```
<SCRIPT LANGUAGE="JavaScript">
function ShowHideLayer(namn,varde,w,h)		
{
if (document.all)								//Explorer
{
	document.all[namn].style.visibility=varde;	//Synlighet
	document.all[namn].style.pixelLeft=w;	//Från vänster
	document.all[namn].style.pixelTop=h;		//Från höger
}
else if (document.layers)						//Netscape
{
	document.layers[namn].visibility=varde;		//Synlighet
	document.layers[namn].left = w;			//Från vänster
	document.layers[namn].top = h; 			//Från höger
}
}
//-->
</SCRIPT>
```

Skulle dock vilja ha det så att dess position följer pekaren. Hur f\*n gör jag? Får det inta att funka... :(

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

## #2 — Johnsen, 2001-02-07T14:54Z

Du får starta en funktion, när musen rör sig, som kollar var musen finns och som sätter lagrets top och left efter det.

```
<script language="JavaScript"><!--
if(document.layers) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = mouseMove
	
function mouseMove(e) {
var x = (document.layers)? e.pageX : event.x+document.body.scrollLeft
var y = (document.layers)? e.pageY : event.y+document.body.scrollTop

if(document.layers){ //Netscape
document.layers["namn"].top=y;
document.layers["namn"].left=x;
}
else{ //Explorer
document.all("namn").style.top=y;
document.all("namn").style.left=x;
}
}
//-->
</script>
```

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

## #3 — Hugo, 2004-02-23T23:21Z

Kan man få igång den koden i mozilla?

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

## #4 — Jojoxx, 2004-02-24T06:44Z

```
<script type="text/javascript"><!--
function mouseMove(e) {
	var x = (document.all)? event.x+document.body.scrollLeft : e.pageX;
	var y = (document.all)? event.y+document.body.scrollTop : e.pageY;
	if(document.getElementById){
		document.getElementById("namn").style.top=y; document.getElementById("namn").style.left=x;
	}
	else if(document.layers){
		document.layers["namn"].top=y; document.layers["namn"].left=x;
	}
	else if(document.all){
		document.all("namn").style.top=y; document.all("namn").style.left=x;
	}
}
if(document.layers) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = mouseMove
//-->
</script>
```

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

## #5 — Hugo, 2004-02-24T22:03Z

Dom här två raderna sänker hela scriptet för mig i Firefox.

```
	var x = (document.all)? event.x+document.body.scrollLeft : e.pageX;
	var y = (document.all)? event.y+document.body.scrollTop : e.pageY;
```

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

## #6 — Jojoxx, 2004-02-25T06:49Z

Funkar kanon för mig i Firefox 0.8

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

## #7 — Hugo, 2004-02-25T09:55Z

Då har jag väl klantat till det någon annanstans, kan jag få html-koden också inklusive lagret som ska föja med pekaren?

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

## #8 — Jojoxx, 2004-02-25T11:40Z

Hittade något som skulle kunna ställa till problemet. Validerar du dokumentet mot xhtml måste man ange enhet ("px" i detta fall). Hade glömt det i första exemplet.

```
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv" lang="sv">
<head>
	<title>...</title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>

<script type="text/javascript"><!--
function mouseMove(e) {
	var x = (document.all)? event.x+document.body.scrollLeft : e.pageX;
	var y = (document.all)? event.y+document.body.scrollTop : e.pageY;
	if(document.getElementById){
		document.getElementById("namn").style.top=y+"px"; document.getElementById("namn").style.left=x+"px";
	}
	else if(document.layers){
		document.layers["namn"].top=y; document.layers["namn"].left=x;
	}
	else if(document.all){
		document.all("namn").style.top=y; document.all("namn").style.left=x;
	}
}
if(document.layers) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = mouseMove
//-->
</script>
<div id="namn" style="position:absolute;">Ett lager</div>

</body>
</html>
```

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

## #9 — Hugo, 2004-02-25T23:22Z

Nu funkar det fint, men....
I ett annat projekt vill jag kunna ploppa upp en ruta vid muspekaren när man håller över en bild, hur gör jag för att anropa scriptet via en OnMouseOver()
Det räcker om det hämtar positionen en gång och sätter rutan där. 
Jag har försökt att modifiera scriptet men blir inte riktigt klok på denna rad:
if(document.layers) document.captureEvents(Event.MOUSEMOVE);
Samt (e) i funktionsanropet, vad gör dom egentligen?

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

## #10 — Jojoxx, 2004-02-26T06:46Z

> **Hugo skrev:**
>
> Jag har försökt att modifiera scriptet men blir inte riktigt klok på denna rad:
> if(document.layers) document.captureEvents(Event.MOUSEMOVE);

Den är bara till för Netscape 4.x och talar om att vi vill avlyssna just eventet mousemove - när man flyttar musmarkören.

> **Hugo skrev:**
>
> Samt (e) i funktionsanropet, vad gör dom egentligen?

e namnger objektet som används för att lagra data om eventet (i detta fall var muspekaren är). I Internet Explorer är det alltid "event" min i Mozilla-baserade webbläsare får du alltså namnge det efter tycke och smak.

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

## #11 — Hugo, 2004-02-26T15:07Z

Då borde jag väl kunna anropa funktionen med:

```
<a href="" OnMouseOver="mouseMove">Dra här över</a>
```

Men jag får det inte att fungera.

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

## #12 — Jojoxx, 2004-02-26T18:19Z

Nej, det måste ske via eventet mousemove

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

## #13 — Hugo, 2004-02-27T10:06Z

Men om jag bara vill läsa av muspekarens position en gång högst upp i en funktion då?

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

## #14 — Jojoxx, 2004-02-27T12:52Z

Gör variablerna för mus-koodinaterna globala och läs av dem från din funktion:

```
<script type="text/javascript">
function showmouse(){
	alert(xmouse+":"+ymouse);
}
var xmouse,ymouse;
function mouseMove(e) {
	xmouse = (document.all)? event.x+document.body.scrollLeft : e.pageX;
	ymouse = (document.all)? event.y+document.body.scrollTop : e.pageY;
}
if(document.layers) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = mouseMove
</script>

<a href="#" onclick="showmouse();">Visa koordinater</a>
```

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/17392-flytta-lager-efter-pekare
