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

    Richiamare 2 funzioni diverse con onClick nello stessotag <a>

    Ciao a tutti
    sono un web designer assolutamente novizio xo' in javascript
    sto creando un menu a discesa o rollover, classico in cui clicco su un'immaginetta del menu con freccia orizzontale, e appare l'altra con freccia verso il basso che aprirà il menu a discesa
    Allora vengo al d unque:
    Ho creato questo nell'html:

    <div class="box"> <a href="#" onClick="act()"; onClick="inact()";>
    [img]photo1.jpg[/img]</a></div>

    (...)

    il corrispondente Javascript nella stessa pagina è:

    <script type="text/javascript" language="JavaScript">

    if (document.images) {
    var su = new Image(); // for the inactive image
    su.src = "photo1.jpg";
    var gius = new Image(); // for the active image
    gius.src = "photo.jpg";
    }



    function act() {
    if (document.images)
    document.images.giu.src = gius.src;
    }

    function inact() {
    if (document.images)
    document.images.giu.src = su.src;
    }
    </script>

    il problerma è che non funziona. o meglio, funziona solo il primo click, e compare l'altra immaginetta, manon riesco col secondo click a ritornarea ll'immagine originale(caricata all'apertura ella pagina)


    Invece se uso OnMouseOut al posto di OnClick cosi:
    Funziona.

    <div class="box"> <a href="#" onClick="act()" onMouseOut="inact()";>
    [img]photo1.jpg[/img]</a></div>


    Qualcunos a dirmi dove ho fatto l'errore, e l'eventuale soluzione ?

    Vi ringrazio in anticipo.

  2. #2
    non puoi mettere 2 onClick nello steswso tag, puoi inizializzare una variabile di stato dove 0 significa disattivato e 1 attivato, modifica il così:


    <div class="box"> <a href="#" onClick="act()">
    [img]photo1.jpg[/img]</a></div>

    (...)

    il corrispondente Javascript nella stessa pagina è:

    <script type="text/javascript" language="JavaScript">
    var stato=0;

    if (document.images) {
    var su = new Image(); // for the inactive image
    su.src = "photo1.jpg";
    var gius = new Image(); // for the active image
    gius.src = "photo.jpg";
    }



    function act() {

    if (stato==0) {
    if (document.images)
    document.images.giu.src = gius.src; stato=1;}

    if (stato==1) {
    if (document.images)
    document.images.giu.src = su.src; stato=0;}

    }
    </script>


    prova con questo e fammi sapere

  3. #3
    Ciao.

    Ti ringrazio., pero' uguale. purtroppo non funziona.

    puoi vedere tu direttamente qua
    http://www.istrionico.com/javascript.html#

    Ciao

  4. #4
    Utente bannato
    Registrato dal
    Jan 2009
    Messaggi
    152
    Originariamente inviato da websky
    ... non funziona.
    E invece sì, funziona; per come è stato programmato ....
    Nella function act() ci sono due IF.

    Il primo dice che, se trova stato=0 ti da' un' immagine ed inoltre rende stato=1

    Poi c'è, viene, viene eseguito il secondo if-statement che se trova stato=1 ti da' quell' altra immagine.

    Eh, certo che lo trova stato=1 ... lo trova sempre!
    E sarà sempre questo secondo if-statement ad avere l' ultima parola.
    Se invece te, per dire li inverti ... sarà quell' altro ad avere l' ultima parola.
    E il tutto continuerà a NON funzionare come ti aspetti.

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    allora guarda cie sono delle cose da dire
    1 non funziona su ff

    2 c'e' un errore di fondo nel js e nella progettazione del rollover.


    SI perche' di rollover si tratta.
    Per fare dei rollover in js la cosa e' abb semplice e NON ti servono 2 funzioni, non devi creare nuove immagini si fa semplciemente cosi :




    [img]img1.jpg[/img]

    lo script lo fai cosi'


    Codice PHP:
    <script type="text/javascript">


    var 
    images1 = new array( "img1.jpg" "img2.jpg" );

    function 
    changeImageelem arr)
    {
          var 
    imgArr null;
          switch(
    arr)
          {
                case 
    "0" imgArr images1 ;break;
                
    // qui ti pui gestire tte le immagini se devi fare piu' rollover

          
    }


          if(
    imgArr)
          {
                if( 
    elem.src ==imgArr[0] )
                      
    elem.src=imgArr[1];
                else
                      
    elem.src=imgArr[0];
          }

    </script>

    et voila ovviamente nn e' testato e' buttato di getto provalo ed eventualmente correggi eventuali imprecisioni ma in linea di masima dovrebbe funzionare.

  6. #6
    in poche parole...funziona nel senso che è giusto quello che fa in base allo script
    ma non è giusto x quello che voglio fare? voglio fare?

    e per quello che voglio fare che è da due giorni (da quando ho inziaitoa studiare js sreiamente) che non riesco a farcela

    chiedo se c'è qualche guida javascript online interessante grazie!
    cosi vedo di studiare quste cose che hai scritto, perché ho bisogno d i entrare nell'ottica.


  7. #7
    Grazie Virus provo subito. spero di capire pero' anche la logica

    Il mio ultimo msg chiaramente era una risp. a Stray

    ciao e grazie, lo testo subito

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Bueno attendo risposta

  9. #9
    Ciao Non sono riuscito a farlo funzionare (magari è colpa mia che honscritto male)

    comunque qua è il link:

    http://www.istrionico.com/javascript.html#

    ma non c'è il tuo script

    ora funziona...ho inserito uno sciript consigliatomi da un forum in inglese, ecco la sua versione

    Codice PHP:
    function change() {   if (document.images)   document.images.giu.src=document.images.giu.src==gius.src?su.src:gius.src; } 
    <a href="#" onclick="change()">


    Comunque x me cambia poco perché devo studiare la logica dle funzionamento. Pensavo di avere capito con quello originale che ho postato,,.,ma aime'. in qusto ci ho capito poco

    mi ha scritto che era una specie di funzione tipo Toggle, infatti eraquello che volevo.
    vado a stuidiare javascripttttttttttttt
    ne ho bisogno

    grazie cmnq.

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    fondamentalmente il concetto e' lo stesso.

    SI tratta di usare l'attributo src del nodo immagine.
    Come recuperarlo dipende da te, puoi farlo con un document.getElement .... oppure con il passaggio del riferimento a se' stesso usando l'atttributo this a tempo di chiamata.

    Il problema e' che quello script non gestisce piu' delle immagini scritte.

    Se devi rifare lo stesso effetto altrove devi scrivere una funzione per ogni effetto che vuoi generare invece con la mia soluzione puoi usare una sola funzione che usa array per gestire tutte le immagini. Quindi puoi riapplicare l'effetto a tutte le immagini che vuoi.

    Adesso testo un attimo il mio script poi te lo posto debuggato.

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.