webForumDet fria alternativet

Skicka variabel

2 svar · 222 visningar · startad av mikkeX

mikkeXMedlem sedan aug. 2002490 inlägg
#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?

JojoxxMedlem sedan juni 20004 306 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);
mikkeXMedlem sedan aug. 2002490 inlägg
#3

tack.

Nu hajjar jag.

Genererad på 373 ms · cache AV · v20260730165559-full.f96bc7eb