Dovendo resettare due select (per il post avevo semplificato il problema) ho fatto così:
Benissimo.
Se comunque vuoi ottimizzare il sistema, ad esempio per resettare molteplici select in un colpo solo senza dover richiamare quella funzione per ciascun elemento, puoi fare una cosa del genere:
codice:
function resetSelect(selector,excludeme){
var s=document.querySelectorAll(selector),i=s.length;
while(i--) if(s[i]!==excludeme) s[i].selectedIndex = 0;
}
dove il primo argomento (selector) non è altro che un selettore CSS che viene passato al metodo querySelectorAll(), per cui puoi impostarlo come meglio ti pare per selezionare gli elementi da resettare, anche usando una semplice classe. In tal caso ho previsto un secondo parametro per poter escludere, dal reset, uno specifico elemento (ad esempio quello da cui è stata chiamata la funzione).
Potresti avere una situazione del genere:
codice:
<select class="selectresettabile" onchange="resetSelect('.selectresettabile',this);">
<option value="">--</option>
<option value="">1</option>
<option value="">2</option>
</select>
<select class="selectresettabile" onchange="resetSelect('.selectresettabile',this);">
<option value="">--</option>
<option value="">1</option>
<option value="">2</option>
</select>
<select class="selectresettabile" onchange="resetSelect('.selectresettabile',this);">
<option value="">--</option>
<option value="">1</option>
<option value="">2</option>
</select>
<input type="button" value="RESET ALL SELECTS" onclick="resetSelect('.selectresettabile');">
Nota la chiamata della funzione, uguale per tutti gli elementi select:
codice:
resetSelect('.selectresettabile',this);
in tal caso ho passato il selettore ".selectresettabile" per selezionare gli elementi definiti con quella classe, ma potresti benissimo definire una cosa come "#artista,#locale,#pippo" per cui saranno selezionati i tre elementi con questi id (esattamente come un selettore CSS). A questo punto, il this passato come secondo argomento andrà ad escludere quello specifico elemento da cui è chiamata la funzione.
Giusto come esempio, sull'ultimo input button non viene passato il secondo argomento, per cui saranno resettati tutti gli elementi considerati attraverso il selettore.
Ovviamente questa è giusto un'ottimizzazione della soluzione iniziale, ma è chiaro che puoi risolvere in svariati altri modi.