---
title: "låsa div efter flytt"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/69019-låsa-div-efter-flytt"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Niehls"
published: "2003-02-21T22:11:05.000Z"
updated: "2003-02-22T12:47:46.000Z"
replies: 11
views: 266
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/69019-låsa-div-efter-flytt"
---

# låsa div efter flytt

## #1 — Niehls, 2003-02-21T22:11Z

jag har fixat ett litet script som flyttar en div. mina javascriptkunskaper är ytterst begränsade, så jag är glad att jag lyckades med det här.. 
koden är:

```php
function moveit(spot)
{

   var picture=document.all.small_box.style;
       if (spot>555)
      {
        picture.left= spot;
        spot-=25;
        setTimeout('moveit('+spot+')',1);
       }      
    
}
```

diven som åker heter small_box

sedan anropas funktionen med href="javascript:moveit(startvärdet)".
ni kan se ett exempel på 
[www.niehls.com/niehls_v3/](http://www.niehls.com/niehls_v3/) 

om ni klickar på länken en gång till så åker diven ytterligare en gång. jag vill att den skall stanna där... nån som vet hur jag kan lösa det här? och kom ihåg...extrem javascript-newbie

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

## #2 — jupiters, 2003-02-22T03:02Z

Alla länkar som finns på en html-sida hamnar i en javascript-array!
links\[0\],links\[1\],links\[2\]...osv

Du behöver bara kolla vilket nummer länken i fråga har och lägga in nedanstående rad i moveit-funktionen.
Href-attributet ändras då från "javascript:moveit(spot)" till bara "#" efter första "klicket".
På din exempelsida fanns bara en länk. Därför nr 0.

document.links\[0\].href="#";

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

## #3 — colione, 2003-02-22T03:26Z

Mja, jag hade nog lagt en variabel som blir true om man har klickat fram rutan och skriva om skriptet så att mankör med en whileloop eller forloop istället för en if...else

typ:

```
function moveit(spot)
{
   var bMoved=false
   var picture=document.all.small_box.style;
       if (!bMoved)
      {
        bMoved=true
          while (spot>555 )
        {
             picture.left= spot;
             spot-=25;
         }
       }      
    
}
```

Den borde funka, det är dock sent och jag är trött :p så det är inte säkert.

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

## #4 — icaaq, 2003-02-22T06:30Z

\*funkar inte i min mozilla\*

mvh icaaq

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

## #5 — Niehls, 2003-02-22T11:21Z

nej....beror väl antagligen på att mozilla är netscape-baserat och netscape pallar inte divs..orkar inte använda layer ist..sorry :)
tack för svaren...skall prova. meddelar om det funkar eller inte

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

## #6 — icaaq, 2003-02-22T11:28Z

> **Niehls skrev:**
>
> nej....beror väl antagligen på att mozilla är netscape-baserat och netscape pallar inte divs..orkar inte använda layer ist..sorry :)
> tack för svaren...skall prova. meddelar om det funkar eller inte

que??
jag använder alltid *"divs"* och jag har inga problem att se dem i vanliga fall.....så utveckla ditt svar lite kanske, om du orkar :)

mvh icaaq

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

## #7 — Niehls, 2003-02-22T11:29Z

hmm.njae funkade inte riktigt (använde coliones exempel).
rutan poppar bara upp.. kan ju bero på att while-loopen körs ganska snabbt.. finns det inte en liknande javascriptfunktion som php's sleep()´? då skulle jag ju kunna få while-loopen att vänta, säg 10 ms innan nästa körning.. vet inte om detta är problemet..nån som vet? (provade även att ändra till spot-=1 istället.)

edit:
du var snabb där :)
ptja..hade för mig att netscape/mozilla/opera tolkar \<div\> taggen lite mystiskt..  oj..nu kom jag på vad som är problemet.... i funktionen borde väl typ

```php
  if (document.layers)
  {
   var picture=document.small_box;
       if (spot<400)
      {
        picture.left= spot;
        spot+=5;
        setTimeout('moveit('+spot+')',10);
       }      
    }
```

också vara inlagd för att mozilla skall förstå det.. (?)

en grej som däremot inte verkar fungera i mozilla är 
overlow-y:auto;
ett exempel finns på den [här](http://www.niehls.com/verdandi/main_index.php?page=members) sidan...

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

## #8 — Jojoxx, 2003-02-22T11:32Z

> **Niehls skrev:**
>
> beror väl antagligen på att mozilla är netscape-baserat

Snarare tvärt om :)

Netscape hanterar div från version 4, men exemplet är gjort för IE-dom så det är inte så konstigt att det inte funderar i något annat.

(jag har lite cross-browser funktioner [här](http://www.jojoxx.net/jscript/libs/index.html#layerlib))

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

## #9 — Jojoxx, 2003-02-22T11:35Z

> finns det inte en liknande javascriptfunktion som php's sleep()´?

Nej tyvärr. setTimeout eller setInterval är det närmaste bästa alternativet.

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

## #10 — Niehls, 2003-02-22T11:54Z

hmm..jag har försökt med setInterval och setTimer nu, men jag får det inte att fungera..kollat lite i min javascriptreferens, men jag är inte sådär underbahrt begåvad med javascript..
försökt att att kalla dem utan kod som skal exekveras, utan endast med intervallet.
t.ex:
window.setInterval('','10');
har även provat setInterval('','10');
samt setTimeout på liknande vis, utan resultat...nån som vet?

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

## #11 — Jojoxx, 2003-02-22T12:17Z

Exempel:

```
<script language="JavaScript" type="text/javascript">
function moveLayerAbs(Id,x,y){
	if (document.all){
		document.all[Id].style.left = x; document.all[Id].style.top = y;
	} else if (document.layers){
		document.layers[Id].left = x; document.layers[Id].top = y;
	} else if (document.getElementById){
		document.getElementById(Id).style.left = x+'px'; document.getElementById(Id).style.top = y+'px';
	}
}
var left=800;
function moveit(){
	left-=5;
	moveLayerAbs("picture",left,50);
	if (left>555) setTimeout('moveit()',10);
}
</script>
<a href="#" onclick="moveit();return false">Flytta</a>
<div id="picture" style="position:absolute;top:50px;left:800px;width:100px;">Ett lager</div>
```

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

## #12 — Niehls, 2003-02-22T12:47Z

hmm.fungerade nästan..
bilden fortsatte flytta sig varje gång jag klickade på länken, så jag lade in
if(left\>555) under function moveit() så fungerade det fint...tack så mkt.
finns på <http://www.niehls.com/niehls_v3/>  om nån vill kika

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/69019-låsa-div-efter-flytt
