Perché

codice:
if (carattere == "si") {
alert("Mostra alert");
}
non è una funzione. Viene richiamato una volta sola al caricamento della pagina e basta. Puoi cliccare quanto vuoi sul link, ma quel codice non verrà comunque più eseguito