Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    88

    onClick - richiamare una funzione e modificare css

    Ciao a tutti,

    Ho una pagina che a grandi linee ha questa struttura
    codice:
    <div class="right" id="gallery">
    
    	<div class="portfolio_tot" id="esterni">
    	</div>
    			
    	<div class="portfolio_tot" id="interni" style="display:none;">
    	</div>
    	
    	<div class="portfolio_tot" id="dettagli" style="display:none;">
    	</div>				
    
    </div>
    
    <div class="nav">
    
    	[*]<a onclick="SwitchMenu('esterni')" id="est">Esterni</a>
    	[*]<a onclick="SwitchMenu('interni')" id="int">Interni</a>
    	[*]<a onclick="SwitchMenu('dettagli')" id="det">Dettagli</a>
    
    </div>
    premettendo che sono relativamente a javascript e lo uso abbastanza poco, ho trovato e adattato questa funzione per far apparire e sparire i tre div contenuti dentro "gallery":

    codice:
    function SwitchMenu(obj){
    	if(document.getElementById){
    	var el = document.getElementById(obj);
    	//alert(obj)
    	var ar = document.getElementById("gallery").getElementsByTagName("div");		
    		if(el.style.display != "inline"){
    			for (var i=0; i<ar.length; i++){
    				if (ar[i].className=="portfolio_tot")
    				ar[i].style.display = "none";
    			}
    			el.style.display = "inline";
    		}else{
    			el.style.display = "none";
    		}
    	}
    }
    Vorrei modificare la funzione in modo che cambi una propietà del css anche al link che clicco per attivare la funzione (in modo da lasciare un feedback all'utente) e riportare al valore standard quella degli altri due elementi contenuti nel div "nav".

    Qualcuno sa darmi qualche consiglio su come procedere?
    DuMbSiM
    --
    Versati un altro bicchiere di vino, accenditi quella strana sigaretta. Ogni cosa e' perdonata ancora prima che tu la faccia.

  2. #2
    semplice, i richiami diventano:

    codice:
    <a onclick="SwitchMenu('esterni', this)" id="est">Esterni</a>
    (BTW, che senso ha mettere gli LI, tra l'altro SOLO aperti, senza mettere l'UL o OL attorno? solo per il puntino?)

    e la funzione diventa:

    codice:
    function SwitchMenu(obj, lnk){
            //INIZIO MODIFICHE CSS
            lnk.style.fontSize = "13px";
            //FINE MODIFICHE CSS
    	if(document.getElementById){
    	var el = document.getElementById(obj);
    	//alert(obj)
    	var ar = document.getElementById("gallery").getElementsByTagName("div");		
    		if(el.style.display != "inline"){
    			for (var i=0; i<ar.length; i++){
    				if (ar[i].className=="portfolio_tot")
    				ar[i].style.display = "none";
    			}
    			el.style.display = "inline";
    		}else{
    			el.style.display = "none";
    		}
    	}
    }
    I DON'T Double Click!

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    88
    Ti ringrazio per l'aiuto, ma ho provato a copiare la funzione così come l'hai modificata, e non funziona più niente.

    Però forse mi sono spiegato male, avrei bisogno di qualcosa che come la funzione, cambia il css all'elemento sul quale ho cliccato e riporta il valore standard agli altri due.

    (BTW, nel mio codice è aperto , non l'ho postato perchè non fondamentale al js, e i list li uso per formattare il menu tramite css senza fare degli span con una classe).
    DuMbSiM
    --
    Versati un altro bicchiere di vino, accenditi quella strana sigaretta. Ogni cosa e' perdonata ancora prima che tu la faccia.

  4. #4
    se ci metti l'OL ed un ID sull'OL si può fare qualcosa:

    codice:
    1. <a onclick="SwitchMenu('esterni')" id="est">Esterni</a>
    2. <a onclick="SwitchMenu('interni')" id="int">Interni</a>
    3. <a onclick="SwitchMenu('dettagli')" id="det">Dettagli</a>
    codice:
    function SwitchMenu(obj, lnk){
    	if(document.getElementById){
    	var elems = [document.getElementById('est'), document.getElementById('int'), document.getElementById('det')];
    	for(var i = 0; i < elems.length; i++){
    		if(elems[i] == lnk){
    			//AGGIUGI LO STILE AL LINK
    		}
    		else{
    			//RIMUOVI LO STILE AL LINK
    		}
    	}
    	var el = document.getElementById(obj);
    	//alert(obj)
    	var ar = document.getElementById("gallery").getElementsByTagName("div");		
    		if(el.style.display != "inline"){
    			for (var i=0; i<ar.length; i++){
    				if (ar[i].className=="portfolio_tot")
    				ar[i].style.display = "none";
    			}
    			el.style.display = "inline";
    		}else{
    			el.style.display = "none";
    		}
    	}
    }
    I DON'T Double Click!

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    88
    Grazie mille...

    Perfetto
    DuMbSiM
    --
    Versati un altro bicchiere di vino, accenditi quella strana sigaretta. Ogni cosa e' perdonata ancora prima che tu la faccia.

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.