Certo che funziona con le variabili locali. Il problema è questo:
Tu nella prima funzione hai una variabile che si chiama s, perciò il codice che vai ad eseguire è "alert(s)". Fin qui, in teoria, tutto bene. Ma il codice non viene eseguito in quella funzione, bensì in un'altra funzione dove la variabile s non esiste. Quindi viene eseguito codice, ma ti restituisce un errore perchè s non esiste. Dovresti passare anche s oppure farla diventare globale.

Rispondi quotando