Avatar billede hono Nybegynder
19. januar 2003 - 02:26 Der er 14 kommentarer

Bevæge billede - Javascript

Jeg skodder for vildt til javascript, men skulle lige prøve at lave en simpel menu alligevel. Det lykkedes selvfølgelig ikke, hvorfor jeg nu beder om hjælp.

Ideen:
Der er en række med knapper (links). Nedenunder er der en pil (en billedefil) der til at starte med peger op på den første af knapperne. Trykker man på en af de andre knapper kører pilen hen, og peger i stedet på denne knap.

Mit forsøg (kode):
<html>
    <head>
        <title>Menuen</title>

<script language="javascript">

var linkpos = 20;
var i=1;

function bevaeg(pos){
var dist = pos - linkpos;
var num;

if(dist < 0){
num = -1*dist;
}else{
num = dist;
}

antal = num/150;
pilen.style.position="relative"

if(dist < 0){
pilen.style.left=+i;
i--;
timer=setTimeout("bevaeg(pos)",antal);
if(i < dist){
stoptimer(pos);
}
}else{
pilen.style.left=+i;
i++;
timer=setTimeout("bevaeg(pos)",antal);
if(i > dist){
stoptimer(pos);
}
}


function stoptimer(pos)
{
clearTimeout(timer);
linkpos = pos;
}


</script>



    </head>
    <body>

<img src="knap.gif" Alt="Link 1" onClick="bevaeg(20)">&nbsp;&nbsp;
<img src="knap.gif" Alt="Link 2" onClick="bevaeg(80)">&nbsp;&nbsp;
<img src="knap.gif" Alt="Link 3" onClick="bevaeg(140)">&nbsp;&nbsp;<br>
<img src="pil.gif" id="pilen" Alt="Pil" style="position:relative;left:20;">

    </body>
</html>


Problemet:
Den rokker sig ikke ud af stedet. Ved godt at jeg sikkert mangler en masse, og har gjort en masse forkert, men jeg kan ikke overskue det lige nu :)

Håber nogen kan hjælpe.

På forhånd tak for hjælpen!

Hono
Avatar billede hono Nybegynder
19. januar 2003 - 02:27 #1
Det kan meget vel tænkes at jeg har bygget det helt forkert og ulogisk op. Så hvis der er noget af koden I ikke forstår, skal I ikke tøve med at spørge!

Hono
Avatar billede Slettet bruger
19. januar 2003 - 11:11 #2
Må vi få et link i stedet?
Avatar billede hono Nybegynder
19. januar 2003 - 12:26 #3
Okay, jeg uploader lige, to sekunder.
Avatar billede hono Nybegynder
19. januar 2003 - 12:28 #4
Avatar billede Slettet bruger
19. januar 2003 - 12:28 #5
Jeg kigger på det i morgen.
Avatar billede hono Nybegynder
19. januar 2003 - 12:29 #6
okay, tak!
Avatar billede wittnezz Nybegynder
19. januar 2003 - 23:41 #7
Her skulle være det (jeg tror) du ønsker:

<html>
    <head>
        <title>Menuen</title>

<script language="javascript">

var linkpos = 20;
var i=20;
var pil;

function move(pos){
    linkpos = pos
    if (i<linkpos){
        pil = window.setInterval("movePic(" + pos + ", 1)",10);
    }
    else{
        pil = window.setInterval("movePic(" + pos + ", 0 )",10);
    }
}

function movePic(pos, direction) //direction: 1 = right, 0 = left
{

    if (direction==1){
        i = i + 1
        document.getElementById("pilen").style.left = i
    }
   
    if (direction==0){
        i = i - 1
        document.getElementById("pilen").style.left = i
    }
   
    if (linkpos==i){
       
        window.clearInterval(pil)
    }
}


</script>



    </head>
    <body>

<img src="knap.gif" Alt="Link 1" onClick="move(20)">&nbsp;&nbsp;
<img src="knap.gif" Alt="Link 2" onClick="move(80)">&nbsp;&nbsp;
<img src="knap.gif" Alt="Link 3" onClick="move(140)">&nbsp;&nbsp;<br>
<img src="pil.gif" id="pilen" Alt="Pil" style="position:absolute;left:20;">

    </body>
</html>



mvh

WittnezZ
Avatar billede wittnezz Nybegynder
19. januar 2003 - 23:42 #8
Det var et svar...!

Ps tricket bestod (mest) i at bruge setInterval i stedet for setTimeout
Avatar billede hono Nybegynder
20. januar 2003 - 00:27 #9
Det ser rigtig godt ud, der er dog en lille ting! Jeg havde forsøgt at lave det sådan, så pilens "glidetur" altid tog lige lang tid uanset hvor langt knapperne var fra hinanden.

Det vil sige at i denne her linie:

pil = window.setInterval("movePic(" + pos + ", X )",10);

Skal 10 tallet erstattes af en varible, der udregnes på baggrund af den afstand pilen skal tilbagelægge. Kunne du få den effekt med?

Ellers ser det sk*de godt ud!

Hono
Avatar billede wittnezz Nybegynder
20. januar 2003 - 13:46 #10
Jeg kigger på det senere...!
Avatar billede hono Nybegynder
20. januar 2003 - 17:08 #11
k, fedt!
Avatar billede hono Nybegynder
21. januar 2003 - 18:34 #12
Ikke for at skynde på dig wittnezz (haster ikke) men hvornår tror du ca. du vil kigge på det?
Avatar billede wittnezz Nybegynder
22. januar 2003 - 18:30 #13
Hey, damn, sorry, har squ lige glemt dig igen..! Har ikke tid før (tidligst) i morgen...!

Mvh

WittnezZ
Avatar billede hono Nybegynder
22. januar 2003 - 19:20 #14
fint nok, jeg venter bare :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester