Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    11

    funzioni in javascript

    Voglio creare l'effetto ombra al passaggio del mouse su un div e questo è il mio index.html:
    codice:
    <!DOCTYPE html>
    <html lang="en">
    	<head>
    		<title></title>
    		 <script>
    		 function onMouseEnter() { 
    			this.style.boxShadow='1px 1px #888888'; 
    		} 
    		function onMouseLeave() { 
    			this.style.boxShadow='1px 1px #ffffff';
    		} </script>
    	</head>
    	<body>
    		<div class=menuitem onmouseover="onMouseEnter()" onmouseout="onMouseLeave()"> 
    	</body>
    </html>
    In questo modo non funziona ma se, invece, tolgo le funzioni e metto direttamente
    codice:
    <div class=menuitem onmouseover="this.style.boxShadow='1px 1px #888888';" onmouseout="this.style.boxShadow='1px 1px #ffffff';">
    funziona.
    Perchè? In cosa sbaglio?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Dentro all'oggetto puoi usare this (questo) fuori devi usa un id per riferirti all'oggetto che vuoi modificare/manipolare/etc...
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    11
    Eh?

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da cavicchiandrea
    Se metti le istruzioni Dentro all'oggetto puoi usare this (questo) se le metti fuori (in una funzione) devi usare un id o ad altre forme di riferimento per riferirti all'oggetto che vuoi modificare/manipolare/etc...
    Esempio esterno:
    codice:
    <!DOCTYPE html>
    <html lang="en">
    	<head>
    		<title></title>
    		 <script>
    		 function onMouseEnter(obj) { 
    			obj.style.boxShadow='1px 1px #888888'; 
    		} 
    		function onMouseLeave(obj) { 
    			obj.style.boxShadow='1px 1px #ffffff';
    		} </script>
    	</head>
    	<body>
    		<div class=menuitem onmouseover="onMouseEnter(this)" onmouseout="onMouseLeave(this)"> 
    	</body>
    </html>
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Soluzione al volo (devi modificare solo questa riga nel tuo esempio!):

    codice:
    		<div class=menuitem onmouseover="onMouseEnter.call(this);" onmouseout="onMouseLeave.call(this);">
    Spiegazione
    succede perché gli eventi dichiarati inline (cioè come fai tu) sono considerati a loro volta delle funzioni.

    se tu fai:

    codice:
    <tuoElemento onmouseover="funzione();">
    è come se facessi così:

    codice:
    function mouseover () {
      // qui dentro viene passato l'oggetto this, che però non verrà passato anche a funzione() !!!
      funzione ();
    }
    
    tuoElemento.onmouseover = mouseover;
    Di conseguenza, o usi alternative all'oggetto this, oppure assegni l'evento via codice. Così:

    codice:
    tuoElemento.onmouseover = funzione; // in questo caso a "funzione()" verrà passato l'elemento this!!
    Spero ti sia chiaro.
    Tutto ciò che fai con jQuery puoi farlo meglio e con la metà del codice in puro JavaScript.

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.