Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    onMouseOver .. onMouseOut troppa frequenza

    Salve ragazzi,
    dunque il mio scopo è quello di far apparire un immagine di fianco ad un link non appena l'utente ci passa sopra con il mouse e di falla sparire quando il mouse si allontana, il problema è che ho un risultato pessimo perchè l'immagine mi si crea 100000 volte alla prima passata di mouse, tanto che ho dovuto mettere un flag per alternare onMouseOver ed onMouseOut, ora l'immagine non compare + troppe volte ma scompare e ricompare in continuazione quando ci passo con il mouse, cmq il codice è questo:

    HTML
    codice:
     HOME
    JAVASCRIPT
    codice:
    function immagine(value){
    	var c = document.getElementById("casa");
    	
    
    	var old= c.outerHTML; //memorizzo l'html attuale
          var stringa = "[img]Images/piccolo.gif[/img]";
    	if(value==1 && flag){
    	var stringaRisultato = old.replace("</A>",stringa);//SE L'EVENTO è onmouseOVER
    	flag=false;
    	}
    	else{ //SE L'EVENTO è onmouseOUT
    	var myRegExp = /IMG/;
    	var Indice = old.search(myRegExp);
    	
    	var stringaRisultato = old.substr(0,Indice-1);
    
    	stringaRisultato = stringaRisultato + "</A>";
    
    	flag=true;
    	}
    	//alert(stringaRisultato);
    	c.outerHTML=stringaRisultato;
    	}
    Ovviamente la variabile flag è globale (anche se sn sicuro si possa togliere in qualche modo)
    spero qualcuno possa aiutarmi grazie

  2. #2
    in questo modo mi funziona

    Codice PHP:
          var img document.createElement("img");
          
    img.src 'Images/piccolo.gif';
          
    img.align ='top'
          
    img.width='40' ;
          
    img.height='38';
          
    function 
    immagine(value){
        var 
    document.getElementById("casa");
        

        if(
    value==1){
        
    c.appendChild(img);
        }
        else{ 
    //SE L'EVENTO è onmouseOUT
    c.removeChild(img);
        }
        } 
    la parte prima fuori dalla funzione serve per creare l'immagine se la metti dentro la funzione quando va in onmouseout la ricrea e quindi non riesce a rimuoverla perche' non e' + quella inserita (oggetto diverso)
    volendo potresti usar 2 funzioni :
    1 metti img
    1 togli img
    e su metti crei l'img in modo che quando la toglie l'img e' diversa (oppure gli dai un id all'img e usi un getelementbyid
    W magica ROMA!

  3. #3
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    Grazie 1000 (come le immagini che apparivano prima)

    Ti ringrazio ora mi funziona bene ed anche su mozilla (cosa che non accadeva 1ma) ! ! L'errore è che cerco sempre di evitare di attaccare e staccare nodi !

  4. #4
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    Xò mi da un piccolo problema

    Ancora nn mi funziona alla perfezione perchè quando sono su IExplorer ed accade onMouseOver, mi appare l'immagine e fin qui è perfetto, se xò mi sposto con il cursore sopra l'immagine IExplorer mi da errore : "Argomento non valido" ....

  5. #5
    credo perche' nel momento in cui ti sposti sopra l'img c'e' l'onmouseout che ti cancella l'img e quindi ciao ciao all'img :P
    W magica ROMA!

  6. #6
    dovresti fare tipo un nodo padre che contiene i 2 nodi e in questo mettere gli eventi del mouse
    W magica ROMA!

  7. #7
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162
    Scusa ma non ho molta familiarità con la gestione dei nodi, ho scritto il seguente codice ma onmouseout sfarlocca, credo sia xkè non so come dichiarare il nuovo elemento padre (o forse anche perchè ho scritto qualche altra porcata visto che con l'albero del dom non ci smanetto mai e questi sono i risultati)
    codice:
     var c = document.getElementById(oggetto); 
        var newNode = document.createElement(); //Che tipo di elemento deve essere ?!?
    	c.appendChild(newNode);
    
        if(value==1){ 
        newNode.appendChild(img);
    	
        } 
        else{ //SE L'EVENTO è onmouseOUT 
    	newNode.removeChild(img); 
    	
        }

  8. #8
    intendevo il tag dell'home lo metti dentro un DIV o qualcosa del genere e in questo gli metti i controlli del mouse
    W magica ROMA!

  9. #9
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    Ok

    Ok grazie ci smanetto 1 po e la soluzione la trovo ! ! Sempre forza ROMA ! ! !

  10. #10
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    Variante al problema

    Ringrazio skorpions in quanto il suddetto problema l'ho + o - risolto, ora però ho una variante per il quale non riesco ad usare quell'approccio:

    Devo cambiare il background di un div, ho fatto la mia solita funzioncina

    codice:
    function ChangeBG(intero){
    
    		var c= document.getElementById("menuSX");
    				if(intero==1){//evento onmouseover
    			var image = "images/sfondoMenu.gif"
    				}
    				if(intero==2)//evento onmouseout
    		var image = "images/italia.gif";
    		c.style.backgroundImage='url('+image+')';
    	}
    Che funziona perfettamente in mozilla ma che tanto per cambiare con firefox mi refresha lo sfondo ad ogni movimento del mouse generando una fastidiosa intermittenza, il problema è che ora non posso appendere il figlio al div menuSX (non credo abbia molto senso).
    Avevo pensato ad utilizzare il metodo setAttribute() e getAttribute() per impostare lo sfondo sperando che non dia + problemi con Iexplorer, ma da quello che leggo sulle varie guide sono metodi dell'oggetto element.
    Come faccio ordunque ?!?

    Grazie

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.