Visualizzazione dei risultati da 1 a 3 su 3

Discussione: variabili

  1. #1
    Utente di HTML.it L'avatar di moncy
    Registrato dal
    Nov 2003
    Messaggi
    49

    variabili

    ho uno script che popola dinamicamente una combo box in base al valore selezionato da un'altra combo, tutto funziona ma ho un problemino con le variabili, infatti ad esempio se passo Emilia_Romagna funziona mentre a me servirebbe Emila Romagna, come posso fare?? (scusate ma non conosco bene javascript)
    posto anche il mio codice:

    <script language = "JavaScript">
    var Abruzzo = new Array("L'Aquila","Chieti","Pescara","Teramo");
    var Calabria= new Array("Catanzaro","Cosenza","Crotone","Reggio Calabria","Vibo Valentia");
    var Campania= new Array("Avellino","Benevento","Caserta","Napoli","S alerno");
    var Emilia_Romagna= new Array("Bologna","Ferrara","Forlì-Cesena","Modena","Parma","Piacenza","Ravenna","Reg gio Emilia","Rimini");
    var Friuli_Venezia_Giulia= new Array("Gorizia","Pordenone","Trieste","Udine");
    var Lazio= new Array("Frosinone","Latina","Rieti","Roma","Viterbo ");
    var Liguria= new Array("Genova","Imperia","La Spezia","Savona");
    var Lombardia= new Array("Bergamo","Brescia","Como","Cremona","Lecco" ,"Lodi","Mantova","Milano","Pavia","Sondrio","Vare se");
    var Marche= new Array("Ancona","Ascoli Piceno","Macerata","Pesaro-Urbino");
    var Molise= new Array("Campobasso","Isernia");
    var Piemonte= new Array("Alessandria","Asti","Biella","Cuneo","Novar a","Torino","Verbano-Cusio-Ossola","Vercelli");
    var Puglia= new Array("Bari","Brindisi","Foggia","Lecce","Taranto" );
    var Sardegna= new Array("Cagliari","Nuoro","Oristano","Sassari");
    var Sicilia= new Array("Agrigento","Caltanissetta","Catania","Enna" ,"Messina","Palermo","Ragusa","Siracusa","Trapani" );
    var Toscana= new Array("Arezzo","Firenze","Grosseto","Livorno","Luc ca","Massa-Carrara","Pisa","Pistoia","Prato","Siena");
    var Trentino_Alto_Adige= new Array("Bolzano","Trento");
    var Umbria= new Array("Perugia","Terni");
    var Valle_dAosta= new Array("Aosta");
    var Veneto= new Array("Belluno","Padova","Rovigo","Treviso","Venez ia","Verona","Vicenza");

    function swapOptions(the_array_name)
    {
    var numbers_select = window.document.mioform.esempi;
    var the_array = eval(the_array_name);
    setOptionText(window.document.mioform.esempi,the_a rray);
    }

    function setOptionText(the_select, the_array)
    {
    the_select.length=the_array.length;
    for (c=0; c < the_array.length; c++)
    {
    the_select.options[c].text = the_array[c];
    }
    }
    </script>
    </HEAD>
    <form name="mioform" method="post" action="ciccio1.php">
    <input name="chiave" type="text" id="chiave2">
    <select size="1" name="categoria" onChange="swapOptions(window.document.mioform.cate goria.options[selectedIndex].text);">
    <option>Tutte</option>
    <option>Abruzzo</option>
    <option>Calabria</option>
    <option>Campania</option>
    <option>Emilia_Romagna</option>
    <option>Friuli_Venezia_Giulia</option>
    <option>Lazio</option>
    <option>Liguria</option>
    <option>Lombardia</option>
    <option>Marche</option>
    <option>Molise</option>
    <option>Piemonte</option>
    <option>Puglia</option>
    <option>Sardegna</option>
    <option>Sicilia</option>
    <option>Toscana</option>
    <option>Trentino_Alto_Adige</option>
    <option>Umbria</option>
    <option>Valle_d''\Aosta</option>
    <option>Veneto</option>
    </select>
    <select size="1" name="esempi">
    <option>Tutte<option>
    </select>
    <input type="submit" name="Submit" value="Submit">
    </form>

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao moncy,

    potresti modificare così la funzione swapOptions
    codice:
    function swapOptions(the_array_name)
    {
    var numbers_select = window.document.mioform.esempi;
    var the_array = eval(the_array_name.replace(/'/g,'').replace(/ /g,'_'));
    setOptionText(window.document.mioform.esempi,the_array);
    }
    e poi le options puoi scriverle così
    codice:
    <option>Emilia Romagna</option>
    <option>Friuli Venezia Giulia</option>
    <option>Trentino Alto Adige</option>
    <option>Valle d'Aosta</option>
    oppure non modifichi la funzione e fai così
    codice:
    <select name="categoria" onChange="swapOptions(window.document.mioform.categoria.options[selectedIndex].value);">
    <option value="Emilia_Romagna">Emilia Romagna</option>
    <option value="Friuli_Venezia_Giulia">Friuli Venezia Giulia</option>
    <option value="Trentino_Alto_Adige">Trentino Alto Adige</option>
    <option value="Valle_dAosta">Valle d'Aosta</option>

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ci sono vari modi per risolvere.

    Servirebbe una razionalizzazione delle variabili, con l'uso di matrici a due componenti (in cui la prima componente la usi come array associativa):

    var province = new Array();
    province['aosta'] = new Array("valle d'Aosta", "Aosta");
    province['piemonte'] = new Array("Piemonte", "Torino", "Alessandria","Asti","Biella", ...);
    ....


    Poi nel codice della prima select, puoi usare i value:
    <option value="tutti">Tutte</option>
    <option value="aosta">Valle d'Aosta</option>
    <option value="piemonte">Piemonte</option>
    ...

    In questo modo usi il value come puntatore alla matrice, e il text come testo da visualizzare.

    Chiaramente in tal modo lo script diventa:
    onchange="swapOptions(this.options[this.selectedIndex].value);"

    Poi lo script diventa:
    codice:
    function swapOptions(index) {
      var numbers_select = document.mioform.esempi;
      setOptionText(numbers_select,index);
    }
    
    function setOptionText(the_select, the_array){
      the_select.length=province[index].length-1;
      for (c=0; c < the_array.length; c++) {
        the_select.options[c].text = province[index][c+1];
      }
    }
    Ho introdotto il nome della regione come primo elemento di ogni riga, pensando che potrebbe servire da qualche altra parte; se non serve puoi anche eliminarlo e togliere quei -1 e +1 inseriti nello script per correggere.

    Non servono due funzioni: si puo` farne una sola:
    codice:
    function swapOptions(index) {
      var the_select = document.mioform.esempi;
      the_select.length = province[index].length-1;
      for (c=0; c < the_array.length; c++) {
        the_select.options[c].text = province[index][c+1];
      }
    }
    Nota: la funzione eval() e` deprecata e bisognerebbe evitare di usarla.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.