Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    function MM_showHideLayers() e Timeot

    Premesso che sono un programmatore di PHP e neofita per quanto riguarda i JavaScript la mia domanda è la seguente:

    utilizzando la classica funzione che mi permette di mostrare e nascondere i livelli...

    codice:
    function MM_showHideLayers() { //v6.0
      var i,p,v,obj,args=MM_showHideLayers.arguments;
      for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
        if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
        obj.visibility=v; }
    }
    function MM_showHideLayers() { //v6.0
      var i,p,v,obj,args=MM_showHideLayers.arguments;
      for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
        if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
        obj.visibility=v; }
    }
    come faccio a far si che all'usita del mouse (onMouseOut) un determinato livello venga si nascosta ma dopo 2 o 3 secondi?

    Ci sto impazzendo!

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    dovrebbe essere
    codice:
    onmouseout="setTimeout('MM_showHideLayers(\'eventuale_argomento1\',\'argomento2\',\'etc...\')',2000)"
    dove 2000=2 sec.

    ciao

    P.s. il forum toglie dei backslash e spezza su 2 righe il codice che chiaramente va in una sola riga,
    x vedere il codice corretto premi il tastino quote in basso a destra

  3. #3
    Grazie Xinod,

    testato per bene... ma purtroppo non funge!


    codice:
    onMouseOut="set_Timeout('MM_showHideLayers('$menu_top_up','','hide')', 2000)"
    In pratica succede niente.

    [QUOTE]Originariamente inviato da Xinod
    dovrebbe essere
    codice:
    onmouseout="setTimeout('MM_showHideLayers(\'eventuale_argomento1\',\'argomento2\',\'etc...\')',2000)"
    dove 2000=2 sec.

    ciao

  4. #4
    Non è che prima devo richiamare la funzione set_Timeout nell'head o da qualche altra parte?

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    occhio che non c' è underscore tra set e Timeout,
    poi hai messo un backslash ( \ ) davanti ad ogni apice che vedi qui sotto in neretto?
    MM_showHideLayers(\'$menu_top_up\',\'\',\'hide\')

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    poi c' è il dollaro, se è una variabile php la cosa si complica,
    tra backslash di php e backslash di javascript...

    posta la riga di codice di php che scrive quella parte di codice

  7. #7
    Nada...
    Lacia perdere la variabile, non è importante tanto che tutti gli altri javascript funzionano sia con la variabile che senza.

    Se vuoi controllare il codice pulito senza variabili e underscore vai qui:
    http://ioweb.it/x.php

    codice:
    onMouseOut="setTimeout('MM_showHideLayers('home','','hide')', 2000)
    Così non mi va.
    Dando un occhiata in giro ( http://www.jsdir.com/tutorials/times.asp?page=2 ) ho anche provato a scrivere

    codice:
    onMouseOut="setTimeout(MM_showHideLayers, 2000, ['home','','hide'])
    ma, neanche così, funziona!

    Azz!

  8. #8
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ma continuano a mancare i backslash!
    quella riga di codice la scrive php?

  9. #9
    Grazie Xinod per la pazienza,

    ma non mi pare che machino i backslash.
    Almeno nel codice della pagina è tutto OK.

    Guarda il codice pulito senza php o roba varia. Non va.
    http://demo/x.php

    Oppure a te funziona?

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>x</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language="JavaScript" type="text/JavaScript">
    <!--
    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_showHideLayers() { //v6.0
      var i,p,v,obj,args=MM_showHideLayers.arguments;
      for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
        if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
        obj.visibility=v; }
    }
    //-->
    </script>
    </head>
    
    <body>
    link
    
    
    <div id="Layer1" style="position:absolute; width:200px; height:115px; z-index:1; left: 9px; top: 32px; visibility: hidden;">ciao</div>
    </body>
    </html>

  10. #10
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    e sì che funziona premettendo i backslash agli apici singoli
    ti riporto la modifica aggiungendo spazi x evitare l' edit del forum

    onMouseOut="setTimeout('MM_showHideLayers(\ 'Layer1\ ',\ '\ ',\ 'hide\ ')', 2000)"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.