Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Reale_Augello
    Guest

    [DOM] Impostare gestore di eventi

    Salve ragazzi,

    ho questo codice:

    codice:
    function Evidenzia(myid) {
     var mydivs=document.getElementsByTagName('div');
     for (i=0; i<mydivs.length; i++)
      if (mydivs[i].id==myid) {
      	mydivs[i].onmouseout=SettaOnMouseOut(mydivs[i]); // *
      }
    }
    Perchè alla riga segnata con l'asterisco mi da un "Non implementato" ?
    Magari con setAttribute è possibile associare una particolare funzione a un determinato evento ?

    Grazie a tutti per le eventuali risposte !

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Per quel che mi risulta, quando setti un evento che faccia partire una funzione, non puoi metterci un parametro.

    Esempio:
    <body ... onload="funzione1('pippo');">

    Ma se lo stesso evento vuoi settarlo dentro lo script:
    document.onload = funzione1;

    dove non ci va la parentesi dopo funzione1 (e non puoi quindi passare parametri).

    E nel tuo caso mi pare che sei nella seconda condizione.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    Mich_ ha ragione, al gestore d'evento si può assegnare solo puntatori a funzione, per cui per passare un parametro dovresti fare:
    codice:
    mydivs[i].onmouseout=function(){
       SettaOnMouseOut(mydivs[i]);
    }
    (ho fatto un copia incolla grossolano, forse (sicuramente) potresti avere problemi col valore i passato nel parametro...lo aggiri con una proprietà)
    In pratica si assegna una funzione contenitore.
    Si può unificare il concetto sotto quest'ottica anche nel caso di gestori d'evento settati via HTML, se si considera che quando si fa:
    codice:
    <body ... onload="funzione1('pippo');">
    in realtà si sta sottointendendo che intorno alla chiamata a funzione c'è una funzione contenitore, che tradotta in codice JS sarebbe qualcosa del tipo:
    codice:
    body.onload = function(){eval("funzione1('pippo');");}
    ...almeno così lo immagino io

    ciauz
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  4. #4
    Reale_Augello
    Guest

    Grazie...

    ... a tutti e due, come al solito illuminanti.
    Mettendo in pratica i suggerimenti in un altro contesto, comunque, non ottengo i risultati sperati.

    Il codice è il seguente:

    codice:
    function LeggiSrc() {
     if (document.getElementById('mioiframe').src.indexOf("contatti")!=-1) {
      document.getElementById('link8').onmouseout=function() {
       SettaOnMouseOut(document.getElementById('link8'));
      }
     }
    }
    
    function SettaOnMouseOut(mydiv) {
     document.getElementById(mydiv).className='cellah';
     Descrizione('','descrizionegiu');
    }
    In sostanza, sembra che la funzione Descrizione non venga presa in considerazione. :master:

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    311
    ... stai chiamando SettaOnMouseOut con un oggetto come parametro (document.getElementById('link8')) ma poi la funzione stessa il parametro lo usa come se fosse un id (document.getElementById(mydiv).className='cellah'

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Prima di esserne sicuro (che la funzine non viene presa in considearazione), dovresti metterci un alert prima e dopo, per verificare il flusso del programma.

    Che poi il problema potrebbe essere dentro la fuzione stessa.

    function SettaOnMouseOut(mydiv) {
    document.getElementById(mydiv).className='cellah';
    alert ("prima - mydiv="+mydiv);
    Descrizione('','descrizionegiu');
    alert ("dopo - mydiv="+mydiv);
    }

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Reale_Augello
    Guest

    Niente...

    ... da fare ragazzi... sembra che la funzione SettaOnMouseOut non venga proprio associata all'onMouseOver... :master:

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    L'osservazione di pela e` corretta, ma a questo puntoio farei un passo indietro, e proverei a chiamare la funzione senza parametri: poi proverei ad inserire parametri tipo stringa, ed infine a passare oggetti (ma questo potrebbe non funzionare, cosa che non dovrebbe essere un grosso problema).

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #9
    Reale_Augello
    Guest

    Niente...

    ... da fare anche non passando il parametro...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633

    Re: Grazie...

    codice:
    function LeggiSrc() {
     if (document.getElementById('mioiframe').src.indexOf("contatti")!=-1) {
      document.getElementById('link8').onmouseout=function() {
       SettaOnMouseOut(document.getElementById('link8'));
      }
     }
    }
    
    function SettaOnMouseOut(mydiv) {
     mydiv.className='cellah';
     Descrizione('','descrizionegiu');
    }
    assicurati di entrare nella condizione e che gli oggetti siano presenti ovviamente.
    ciauz
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

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.