Skicka variabel

JavaScript

2 svar · 228 visningar · startad av mikkeX

Medlem sedan aug. 2002477 inlägg
Trådstart#1

HAr stirrat mig blind på ett problem och jag får det inte att funka - en funktion ska utföras när en viss tid har passerat, och den funktionen ska skicka en variabel till den andra:

<SCRIPT LANGUAGE="JavaScript">
var tidtagare; //sätter variabeln tidtagare
var tid = 1000; //tid mäts i milliskeunder - 1000 ms är lika med en sekund
ie = (document.all) ? true : false;
nav4 = (document.layers) ? true : false;
nav6 = (!document.all && document.getElementById) ? true : false;

function startaTidtagare(lager){
tidtagare = setTimeout("dolj(lager)",tid);
}
function dolj(lager){
if (nav4) {
document.layers\[lager\].visibility = 'hide';
}
if (ie) {
document.all\[lager\].style.visibility = 'hidden';
}
else if (nav6){
document.getElementById(lager).style.visibility = 'hidden';
}

}

</SCRIPT>

Så här ser det ut i Body:

<div id="menu" class="menu" style="width: 100px;height:30px;background-color:red;text-align:center;cursor:hand" onmouseout="startaTidtagare('lager2')">ett test</div>
<div id="lager2" class="lager2" style="position:absolute; top: 50px; left: 20px; background-color: black; color: white">text</div>

Varför fungerar det inte?

Medlem sedan juni 20004 308 inlägg
#2

En klassiker i repris :)

tidtagare = setTimeout("dolj(lager)",tid);

Det som sker här är att uttrycket "dolj(lager)" sparas för exekvering om tid millisekuner. Efter x antal millisekunder kommer då kodsnutten att exekvera;

dolj(lager)

... men då finns ju inte variabeln lager definierad. Den var ju bara ett argument till funktionen startaTidtagare() och finns inte längre kvar. Det du vill är alltså att ha värdet från variabeln lager, alltså;

tidtagare = setTimeout("dolj('"+lager+"')",tid);
Medlem sedan aug. 2002477 inlägg
#3

tack.

Nu hajjar jag.

284 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)