Avatar billede -42- Nybegynder
07. januar 2004 - 11:28 Der er 16 kommentarer

problem med setTimeout()

Hvorfor venter den ikke 1 sekund før min menu lukker? -Den lukker med det samme

setTimeout(closeMenu(b[0]),1000);

function closeMenu(){
var b=closeMenu.arguments;
document.getElementById(b[0]+'down').style.visibility = "hidden";
}
Avatar billede medions Nybegynder
07. januar 2004 - 11:35 #1
Har du prøvet at sætte den til flere sekunder og se om den reagere på det?

//>Rune
Avatar billede nikolajdu Nybegynder
07. januar 2004 - 11:40 #2
function closeMenu(){
var b=closeMenu.arguments;
document.getElementById(b[0]+'down').style.visibility = "hidden";
clearTimeout(timer);
}

timer = setTimeout("closeMenu("+(b[0])+")",1000);
Avatar billede nikolajdu Nybegynder
07. januar 2004 - 11:43 #3
Jeg forstår i øvrigt ikke hvorfor du bruger arguments i så lille en funktion?

function closeMenu(b){
document.getElementById(b+'down').style.visibility = "hidden";
clearTimeout(timer);
}

timer = setTimeout("closeMenu("+(b[0])+")",1000);
Avatar billede -42- Nybegynder
07. januar 2004 - 11:47 #4
den virker stadig ikke...
Avatar billede nikolajdu Nybegynder
07. januar 2004 - 11:49 #5
Nu mangler vi jo nogle oplysninger for at vide hvordan resten er skruet sammen. Hvad er b[0] f.eks og hvordan ser det du prøver at skjule ud?
Avatar billede nikolajdu Nybegynder
07. januar 2004 - 11:57 #6
Ellers sådan her :

b = new Array("hej", "dav", "Bøh", "Buh");
array_nr = 1;

timer = setTimeout("closeMenu(b["+array_nr+"])",1000);
Avatar billede -42- Nybegynder
07. januar 2004 - 12:31 #7
Undskyld jeg lige har været væk!

Her er et af lagne der skal skjules
Avatar billede -42- Nybegynder
07. januar 2004 - 12:32 #8
<div id="bull1down" style="position:absolute; filter: alpha(opacity=95); visibility:hidden; left:22px; top:60px; width:437px;  z-index:2" class="rolldown">
      <table border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td class="rolldownMenu"><a href="#">Strategy</a><br /> <a href="#">Corporate
            branding</a><br /> <a href="#">Product positioning</a><br /> <a href="#">Lead
            generation</a><br /> <a href="#">Strategic sales support</a></td>
          <td class="rolldownMenu"><a href="#">Danware</a><br /> <a href="#">DDD</a><br />
            <a href="#">Phase One</a></td>
        </tr>
      </table>
    </div>



her er koden der aktivere funktionerne



<td><a href="#" onmouseout="MM_swapImgRestore('bull1')" onmouseover="MM_swapImage('bull1','','images/bullet_menu_over.gif',1)"><img src="images/bullet_menu.gif" name="bull1" width="14" height="30" border="0" id="bull1" /></a></td>
                  <td class="menuField"><a href="#" class="menuText" onmouseover="MM_swapImage('bull1','','images/bullet_menu_over.gif',1)" onmouseout="MM_swapImgRestore('bull1')" id="bull1text">The
                    work</a></td>



her er mit js



function MM_swapImgRestore() { //v3.0
  var b=MM_swapImgRestore.arguments;
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
  document.getElementById(b[0]+'text').style.color = "#000000";
  timer = setTimeout("closeMenu("+(b[0])+")",1000);
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
  if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];
  document.getElementById(a[0]+'text').style.color = "#ffffff";}
  document.getElementById(a[0]+'down').style.visibility = "visible";
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}

function closeMenu(b){
alert("close menu"+b);
document.getElementById(b+'down').style.visibility = "hidden";
clearTimeout(timer);
}
Avatar billede -42- Nybegynder
07. januar 2004 - 12:35 #9
alerten i closeMenu funktionen kommer med outputtet "close menu[object]", så det tyder på at der er noget galt med argumentet
Avatar billede -42- Nybegynder
07. januar 2004 - 12:49 #10
hvis jeg ændre linien til dette:

timer = setTimeout(closeMenu(b[0]),1000);

bliver outputtet i alerten "close menubull1"

dvs. argumentet kommer men... Men den venter ikke et sekund. også selvom jeg fjerner alerten.

??
Avatar billede nikolajdu Nybegynder
07. januar 2004 - 12:55 #11
setTimeout("closeMenu(b["+0+"])",1000);
Avatar billede -42- Nybegynder
07. januar 2004 - 12:58 #12
Det virker desvære slet ikke... Så kalder den ikke engang funktionen, da alerten ikke bliver vist...
Avatar billede roenving Novice
10. januar 2004 - 02:10 #13
Syntaksen for setTimeout er setTimeout('funktion(args)',msecs)

-- og da 'funktion(args)' er en tekst-streng, skal man over i den slags trick, som bla. nikolaj viser ...

-- dvs. din linje i retsore skal være:

  timer = setTimeout("closeMenu("+b[0]+")",1000);

-- eller nikolajs !-)
Avatar billede -42- Nybegynder
06. maj 2005 - 13:24 #14
nogle der vil have lidt point?
Avatar billede roenving Novice
06. maj 2005 - 14:20 #15
Er der nogen, som skal have point ?-)
Avatar billede -42- Nybegynder
06. maj 2005 - 14:31 #16
Dig f.eks :-)
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