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

    Modifica ad una funzione if else

    Salve,
    uso una piccola funzione per mostrare/nascondere dei div in base alla modifica di una select.

    codice:
    function showForm(sel){
    	if(sel.options[sel.selectedIndex].value == 'page')
    	{
    		document.getElementById('page_form').style.display='block';
    		document.getElementById('url_form').style.display='none';
    		document.getElementById('cp_form').style.display='none';
    	} 
    	else if(sel.options[sel.selectedIndex].value == 'url')
    	{
    		document.getElementById('page_form').style.display='none';
    		document.getElementById('url_form').style.display='block';
    		document.getElementById('cp_form').style.display='none';
    	} 
    	else if(sel.options[sel.selectedIndex].value == 'cp')
    	{
    		document.getElementById('page_form').style.display='none';
    		document.getElementById('url_form').style.display='none';
    		document.getElementById('cp_form').style.display='block';
    	} 
    	else
    	{
    		document.getElementById('page_form').style.display='none';
    		document.getElementById('url_form').style.display='none';
    		document.getElementById('cp_form').style.display='none';
    	}
    }
    Ma come immaginerete se aggiungo un div, devo scrivere la riga in ogni condizione if.
    Dato che non sono molto esperto in javascript, vorrei sapere se esiste un modo per automatizzare il processo?

    Grazie in anticipo.
    Ciao!

  2. #2
    potresti nascondere preventivamente tutti i form della pagina e poi mostrare solo quello di cui ricevi l'id.
    In alternativa, se ci sono form che non devono mai essere nascosti, puoi assegnare una classe solo ai form interessati e nascondere solo quelli.

  3. #3
    In effetti lo faccio, ma alla modifica della select devo nascondere quello mostrato e mostrarne un altro.
    Ciao!

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da fmortara
    In effetti lo faccio, ma alla modifica della select devo nascondere quello mostrato e mostrarne un altro.
    Memorizzati in una variabile globale il div appena mostrato e alla successiva scelta nascondi il div contenuto nella variabile, mostri il nuovo div e sovrascrivi la variabile col nuovo div.

  5. #5
    ehm... non conosco a sufficienza il js per farlo...
    non è che scriveresti due righe di getto?
    Ciao!

  6. #6
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da fmortara
    ehm... non conosco a sufficienza il js per farlo...
    non è che scriveresti due righe di getto?
    codice:
    var oShownDiv = null;
    
    function showForm(sel){
    	if(sel.options[sel.selectedIndex].value == 'page')
    	{
    		if (oShownDiv) { oShownDiv.style.display = "none"; }
    		oShownDiv = document.getElementById("page_form");
    		oShownDiv.style.display = "block";
    	} 
    	else if(sel.options[sel.selectedIndex].value == 'url')
    	{
    		if (oShownDiv) { oShownDiv.style.display = "none"; }
    		oShownDiv = document.getElementById("url_form");
    		oShownDiv.style.display = "block";
    	} 
    	else if(sel.options[sel.selectedIndex].value == 'cp')
    	{
    		if (oShownDiv) { oShownDiv.style.display = "none"; }
    		oShownDiv = document.getElementById("cp_form");
    		oShownDiv.style.display = "block";
    	} 
    	else if (oShownDiv) { oShownDiv.style.display = "none"; }
    }

  7. #7
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Calcola che se assegni a ciascuna option il valore esatto dell'id del div e a una option il valore di "nessuno" (valore scelto a caso) ti puoi semplificare di molto la vita...:

    codice:
    var oShownDiv = null;
    
    function showForm(sel) {
    	var sDivId = sel.options[sel.selectedIndex].value;
    	if (oShownDiv) { oShownDiv.style.display = "none"; }
    	if (sDivId === "nessuno") { oShownDiv = null; return; }
    	oShownDiv = document.getElementById(sDivId);
    	oShownDiv.style.display = "block";
    }

  8. #8
    Originariamente inviato da fmortara
    In effetti lo faccio, ma alla modifica della select devo nascondere quello mostrato e mostrarne un altro.
    Intendevo, nascondere preventivamente nella funzione:
    codice:
    function showForm(sel){
    
        var selezionato=sel.options[sel.selectedIndex].value;
    
        //nascondo tutti i form
        var tutti_i_form=document.getElementsByTagName('form');
        for(var i=0; i<tutti_i_form.length; i++){
            tutti_i_form[i].style.display="none";
        }
        
        //mostro solo quello passato
        document.getElementById('form_'+selezionato).style.display='block'
    
    }

  9. #9
    Intanto grazie a tutti!!

    La prima funzione di Carlo va alla grande.

    Per quanto riguarda la seconda, non posso dare ai div lo stesso nome dell'option, perché alcuni div si aprono con diverse option scelte.

    La funzione di luca non va perché mi elimina il form e non i div nel form, ma probabilmente potrebbe andare se modificata opportunamente, me la studierò!

    PS: Il form è unico, ed io nascono/mostro solo alcuni div in base ad alcune scelte dell'utente

    codice:
    form
    ..input
    ..select (in base a questa select mostro uno o nessuno dei div)
    
      ..div
      ..div
      ..div
    
    /form
    Ciao!

  10. #10
    Ho editato il messaggio precedente!!
    Ciao!

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.