Avatar billede koch Nybegynder
22. september 2003 - 21:28 Der er 29 kommentarer og
1 løsning

Sæt variabel alt efter hvor på siden funktionen kaldes

Hej, jeg har et spørgsmål om til deklaration af variable i javascript. Hvordan kan jeg tildele variable forskellige værdier alt efter hvor på siden(hvilket TD-felt) funktionen(som skal bruge variablerne) kaldes? Værdierne i mine variable ændres også i funktionen. Kan dette gøres med "onMouseOver" i TD-felterne eller vil variablen så have samme værdi så længe musen er over TD-feltet?
På forhånd tak for hjælpen
Avatar billede nmh Nybegynder
22. september 2003 - 21:33 #1
Når du bruger onMouseOver, kan får aktiveret en funktion.
Den kan ændre en eller flere variable.
Du kan have forskellige funktioner, der aktiveres rundt omkring på siden, afhængig af hvilken ting du kører musen henover.
Avatar billede nmh Nybegynder
22. september 2003 - 21:36 #2
Så du kan have en variable, der øverst på siden måske får tildelt værdien 1, når onMouseOver træder i funktion, men et andet sted får tildelt værdien 1.
Den enkelte funktion kan håndtere flere variable, hvis du hart brug for det.
Du skal altså have forskellige funktioner, som aktiveres af forskellige begivenheder. En begivenhed er her at musen placeres et bestemt sted.
Avatar billede skovenborg Nybegynder
22. september 2003 - 22:40 #3
altså hvis du fx har et script der bruger en variabel kaldet "tal" kan du tildele den nye værdier ved en onmouseover:
<table>
<tr>
<td onmouseover="tal = 10;">OVER HERE</td>
<td onmouseover="tal = 20;">OVER HERE TOO</td>
</tr>
</table>

Husk bare at din variabel skal være global, altså specificeret udenfor en funktion, fx lige før funktionen starter.
Avatar billede nmh Nybegynder
22. september 2003 - 22:43 #4
For at fortsætte skovenborgs indlæg:
<td onmouseover="f1();">OVER HERE</td>
<td onmouseover="f2();">OVER HERE</td>
Nu kan du lave en hel masse i funktioneren f1 og f2.
Avatar billede skovenborg Nybegynder
22. september 2003 - 22:53 #5
Det hele afhænger jo af hvad præcis dit script går ud på.
Avatar billede casper_skovgaard Nybegynder
23. september 2003 - 10:06 #6
du kan vælge at have en global variable, som du så kan skrive til og læse fra tabellen.

I nedenstående eksempel har du en global variabel myVar. I tabellen sættes værdien ved mouseover og vises efterfølgende i status linien


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
    <title></title>
    <script type="text/javascript" language="JavaScript">
    var myVar = "ingen række";
    </script>
</head>

<body>
<table border="1">
<tr><td onmouseover="myVar='række 1'; window.status=myVar;">Række 1</td></tr>
<tr><td onmouseover="myVar='række 2'; window.status=myVar;">Række 2</td></tr>
<tr><td onmouseover="myVar='række 3'; window.status=myVar;">Række 3</td></tr>
</table>


</body>
</html>
Avatar billede nmh Nybegynder
23. september 2003 - 10:08 #7
så smider jeg da også et svar. :o)
Avatar billede skovenborg Nybegynder
23. september 2003 - 19:53 #8
ku' vi evt. få lidt respons???
Avatar billede koch Nybegynder
24. september 2003 - 19:02 #9
Problemet er at jeg skal bruge funktionen mens musen er over TD-feltet og variablerne ændres af funktionen. Vil variablen som bestemmes ved onMouseOver så kun være den værdi så længe musen er over?
Avatar billede skovenborg Nybegynder
24. september 2003 - 19:38 #10
Nej, hvis du ændrer en global variabel med fx en funktion, så forbliver den som den er til du ændrer den igen (fx flytter musen over et andet felt med samme funktion
Avatar billede casper_skovgaard Nybegynder
24. september 2003 - 20:22 #11
Jeg prøver lige igen :) jeg er nu ikke helt sikker på hvad det er du ønsker

den globale variabel vil have samme værdi indtil den sættes igen.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
    <title></title>
    <script type="text/javascript" language="JavaScript">
    var myVar = "ingen række";
   
    function setMyVar( newValue){
        myVar = newValue;
    }
    </script>
</head>

<body>
<table border="1">
<tr><td onmouseover="setMyVar('række 1'); window.status=myVar;">Række 1</td></tr>
<tr><td onmouseover="setMyVar('række 2'); window.status=myVar;">Række 2</td></tr>
<tr><td onmouseover="setMyVar('række 3'); window.status=myVar;">Række 3</td></tr>
</table>


</body>
</html>
Avatar billede koch Nybegynder
24. september 2003 - 21:00 #12
Til Casper skovgaard: Det er ikke helt det jeg mener.
Til Skovenborg: Vil det sige at min variabel vil have samme værdi, så længe musen er over TD-feltet selvom min funktion egentlig ændrer variablen? Det fremgår måske ikke helt klart.

Jeg sætter værdien i en variabel med OnMouseOver i et TD felt. Mens musen er over TD-feltet er det meningen at min funktion skal ændre variablen hver gang jeg klikker med musen på et billede som er i TD-feltet.

Mit spørgsmål er så: Kan min "klik-funktion" godt ændre værdien i variablen så længe onMouseOver egentlig bestemmer værdien i variablen. Jeg bestemmer jo egentlig værdien af variablen med onMouseOver og funktionen på samme tid!

Min hensigt er at variablen skal sættes med onMouseOver alt efter hvilket TD-felt musen er over. Mens musen er over dette felt skal jeg så bruge min funktion, som skal kunne ændre værdien hver gang der klikkes på et billede.
Lad os sige at onMouseOver sætter ImgStart=1. Funktionen ImgShift() kaldes ved at klikke på billedet og hver gang der klikkes lægges der en til ImgStart.

Håber ikke jeg har gjort det mere indviklet med min forklaring.
Avatar billede casper_skovgaard Nybegynder
24. september 2003 - 21:09 #13
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
    <title></title>
    <script type="text/javascript" language="JavaScript">
    var myVar = 0;
   
    function initMyVar( newValue){
        myVar = newValue;
    }
   
    function incMyVar(){
        myVar += 1
    }
    </script>
</head>

<body>
<table border="1">
<tr><td onclick="incMyVar(); window.status=myVar;" onmouseover="initMyVar(1); window.status=myVar;">Række 1</td></tr>
</table>


</body>
</html>
Avatar billede skovenborg Nybegynder
24. september 2003 - 21:19 #14
ja, altså når du først flytter musen over og ændrer variablen og derefter klikker vil variablen stadig ændre sig:
<script type="text/javascript">
  var imgstart;
  function shiftImg()
  {
      imgstart++;
      window.status = imgstart;
  }
</script>

<table>
<tr>
<td onmouseover="imgstart=1;" onclick="shiftImg()"><img src="billede.png"></td>
</tr>
</table>
Avatar billede skovenborg Nybegynder
24. september 2003 - 21:20 #15
Hvis du derimod flytter musen ud og ind i den samme celle igen, så ændres variablen igen til 1 og tæller opad.

Ved ikke om det er meningen.
Avatar billede skovenborg Nybegynder
24. september 2003 - 21:21 #16
Det vigtigste er bare at du definerer din imgstart uden for en funktion, eller kan den ikke ændres udenfor.
Avatar billede koch Nybegynder
24. september 2003 - 23:34 #17
Det er simpelthen svaret på mit spg., mit problem må ligge et andet sted så :0) Jeg kan ikke rigtig give dig pointene skovenborg når det er kommentar? Vil du skrive et svar så jeg kan aflevere pointene. Skovgaard du skal naturligvis også have tak for hjælpen.
Avatar billede koch Nybegynder
24. september 2003 - 23:41 #18
Er det ukorrekt at definere en variabel som denne: var ImgEnd=ImgStart+4
Hvis ImgStart=1, så er ImgEnd=5?
Avatar billede skovenborg Nybegynder
24. september 2003 - 23:46 #19
næh, det ser okay ud. Det er bare en god ide' at erklære den sammen med imgstart helt i starten:
var imgStart,imgEnd;
så burde der ikke være problemmer.
Avatar billede koch Nybegynder
24. september 2003 - 23:49 #20
Du er sku dygtig :o) Tak.
Avatar billede skovenborg Nybegynder
24. september 2003 - 23:54 #21
nå, skulle casper_skovgaard ikke ha' noget???
Avatar billede koch Nybegynder
24. september 2003 - 23:56 #22
En lille detalje:

function ImgShift(){
ImgEnd=ImgStart+4
ImgNum=ImgStart
ImgNum=ImgNum+1
if (ImgNum==ImgEnd)
  {ImgNum=ImgStart}
  Window.status=ImgNum;
Jeg aktiverer funktionen ved at klikke på et billede som sagt, men ImgNum bliver ikke større end 2, hvis ImgStart=1. Er det fordi at ImgNum=ImgStart er inde i funktionen? Sætter jeg den udenfor står "NaN" i statuslinien og det kan jeg ikke lige greje hvor kommer fra.
Avatar billede koch Nybegynder
25. september 2003 - 00:10 #23
Jeg går udfra at man giver pointene til personen som er kommet med svaret på ens spørgsmål? Eller kunne jeg have delt dem? Jeg er ny her på experten så oplys endelig hvis der er en anden måde jeg kan dele pointene på til de rare hjælpere :o)
Avatar billede skovenborg Nybegynder
25. september 2003 - 00:14 #24
der er en anden måde, hvor du kan trykke på advanceret og derefter dele pointene ud til dem du vil. Det så for sent nu, så med mindre casper_skovgaard protesterer højlydt så må du bare huske det til en anden gang.
Avatar billede koch Nybegynder
25. september 2003 - 00:15 #25
tak for det.
Avatar billede skovenborg Nybegynder
25. september 2003 - 00:16 #26
og som svar på dit lille sidste spørgsmål så kan du skrive:
<script language="javascript">

  var ImgStart,ImgEnd;
  var ImgNum=1;
  function shiftImg()
  {
      ImgEnd=ImgStart+4;
ImgNum++;
if (ImgNum==ImgEnd)
  {ImgNum=ImgStart;}
  window.status=ImgNum;
  }
</script>
Avatar billede skovenborg Nybegynder
25. september 2003 - 00:17 #27
problemmet før var at du hele tiden satte ImgNum til ImgStart som jo er 1. Derfor kunne ImgNum højest blive 2.

Derfor skal du sætte ImgNum udenfor funktionen (så den er global) og give den værdien 1 der.
Avatar billede skovenborg Nybegynder
25. september 2003 - 00:18 #28
...og hvis ImgNum også skal resette når du flytter musen over skal du bare skrive:
onmouseover="ImgStart=1;ImgNum=1;"
Avatar billede koch Nybegynder
25. september 2003 - 00:22 #29
fedt fedt fedt. Jeg har sat ImgNum=ImgStart ned i min onMouseOver, så virker det. mange tak for hjælpen.
Avatar billede skovenborg Nybegynder
25. september 2003 - 00:26 #30
det var så lidt :-)
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